setDaemon方法把java的線程設置為守護線程,此方法的調用必須在線程啟動之前執行。只有在當前jvm中所有的線程都為守護線程時,jvm才會退出。
如果創建的線程沒有顯示調用此方法,這默認為用戶線程。
下面是一個示例代碼:
public class TestThreadDaemonMethod {
/**
* @param args
*/
public static void main(String[] args) {
TestThread t = new TestThread("test thread");
//如果設置為false,那么在執行完后面的start方法后,jvm不會退出
t.setDaemon(false);
//如果設置為true,則執行完后面的start方法后,jvm會退出
t.setDaemon(true);
t.start();
//在start之后設置daemon會拋出異常
//t.setDaemon(true);
if (t.isDaemon()) {
System.out.println("test thread is a daemon.");
}
}
}
class TestThread extends Thread {
private String name;
public TestThread(String name) {
this.name = name;
}
/* (non-Javadoc)
* @see java.lang.Thread#run()
*/
public void run() {
while(true) {
System.out.println("running " + name);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}