主題setDeaemon根據Java時,setDaemon設置爲true迷惑,對Java中
它不妨礙JVM 當節目結束,但 線程仍在運行退出。一個守護進程線程的例子是 垃圾回收。
從下面的代碼示例,由主線程創建的線程停止時setDaemon
設置爲真執行,實際上它應該繼續運行。當setDaemon
設置爲false即使主線程退出,我的子線程打印值。 請好好澄清我的疑問。
public class DeamonSample implements Runnable
{
public void run()
{
try
{
System.out.println("T1 started...");
for (int i=0;i<1000;i++)
{
TimeUnit.SECONDS.sleep(1);
System.out.print(i+" ");
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
System.out.println("T1 ended...");
}
}
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("Main Started...");
System.out.println("Main Thread Type="+Thread.currentThread().isDaemon());
DeamonSample deamonSample=new DeamonSample();
Thread t1=new Thread(deamonSample);
t1.setDaemon(true);
t1.start();
System.out.println("T1 Type="+t1.isDaemon());
System.out.println("Main Thread Type="+Thread.currentThread().isDaemon());
System.out.println("Main ended...");
}
}
它不應該是't1.join()'? – 2011-04-19 08:40:06