【发布时间】:2011-04-19 08:18:02
【问题描述】:
根据java当setDaemon设置为true时
它不会阻止 JVM 程序完成时退出但 线程仍在运行。一个 守护程序线程的示例是 垃圾回收。
从下面的代码示例中,主线程创建的线程在setDaemon设置为true时停止执行,实际上它应该继续运行。当setDaemon 设置为 false 时,即使主线程退出,子线程也会打印 i 的值。
请澄清我的疑问。
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...");
}
}
【问题讨论】:
标签: java multithreading