大家好,当封闭的线程完成时,守护线程会停止工作吗?或者当“主”线程完成时守护线程将停止?
我在 jre6 上测试了这个例子,结果是daemon thread stopped working when the enclosing it thread finished
。请注意,java 文档说,当没有其他应用程序线程剩余时,守护线程将被终止。并且并没有说当父非守护线程保留时守护线程会被杀死。
请给我答案。请向我发送有关此问题的任何材料。
对不起我的英语不好。
public class Main {
public static void main(String[] args) {
Thread simple = new Thread(new SimpleTask());
simple.start();
}
}
class SimpleTask implements Runnable {
public void run() {
try {
Thread daemon = new Thread(new DaemonTask());
daemon.setDaemon(true);
daemon.start();
Thread.sleep(5000);
} catch (InterruptedException e) {}
};
}
class DaemonTask implements Runnable {
public void run() {
int i = 0;
while (true) {
try {
System.out.println("a" + (i++));
Thread.sleep(500);
} catch (InterruptedException e) {}
}
}
}
当封闭它的线程完成时,守护线程会停止工作吗?
Java 中没有“封闭线程”这样的概念。有线程groups但它们很少被使用。
守护线程只是不能阻止 JVM 终止的线程。当没有任何非守护线程剩余时,JVM 将终止。如果仍然有一些非守护线程在执行,JVM 将继续运行,包括任何守护线程 - 无论这些线程是否正在执行started那些守护线程已经完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)