setDaemon方法把java的線程設(shè)置為守護(hù)線程,此方法的調(diào)用必須在線程啟動(dòng)之前執(zhí)行。只有在當(dāng)前jvm中所有的線程都為守護(hù)線程時(shí),jvm才會(huì)退出。
如果創(chuàng)建的線程沒有顯示調(diào)用此方法,這默認(rèn)為用戶線程。
下面是一個(gè)示例代碼:
public class TestThreadDaemonMethod {
/**
* @param args
*/
public static void main(String[] args) {
TestThread t = new TestThread("test thread");
//如果設(shè)置為false,那么在執(zhí)行完后面的start方法后,jvm不會(huì)退出
t.setDaemon(false);
//如果設(shè)置為true,則執(zhí)行完后面的start方法后,jvm會(huì)退出
t.setDaemon(true);
t.start();
//在start之后設(shè)置daemon會(huì)拋出異常
//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();
}
}
}
}