我编写了一个程序,在其中运行一个守护进程线程和一个非守护进程线程。根据理论,一旦非守护进程线程执行完成,JVM就会终止守护进程线程的执行。但是当我运行我的程序时,即使在非守护进程线程完成之后,守护进程线程仍在执行。为什么?
我写的程序是
class DaemonDemo implements Runnable {
Thread th;
DaemonDemo() {
th = new Thread(this);
th.setDaemon(true);
th.start();
}
public void run() {
System.out.println("Run: " + th.isDaemon());
for (int i = 1; i <= 10; i++) {
System.out.println("Run: " + i);
}
}
}
public class Test_DaemonDemo {
public static void main(String[] args) {
DaemonDemo dd = new DaemonDemo();
System.out.println("Main Countdown Starts");
for (int i = 1; i <= 10; i++) {
System.out.println("main: " + i);
}
}
}输出是
Main Countdown Starts
Run: true
main: 1
Run: 1
main: 2
Run: 2
main: 3
Run: 3
main: 4
Run: 4
main: 5
Run: 5
main: 6
Run: 6
main: 7
Run: 7
main: 8
main: 9
main: 10
Run: 8
Run: 9
Run: 10我不明白为什么守护进程线程在完成非守护进程线程之后仍在运行?
发布于 2018-09-23 15:42:55
这只是主线程终止和守护进程线程突然终止之间的延迟问题。
将守护进程的线程循环计数增加到100。
不会走得太远。
https://stackoverflow.com/questions/50543191
复制相似问题