【发布时间】:2019-09-30 20:29:11
【问题描述】:
我编写了一个主应用程序,它创建了两个线程,即 A 和 B。线程 A 是用户线程,线程 B 是守护进程。 A 完成作业,因此 JVM 退出,但线程 B 仍在运行。由于线程 A 和 B 是在 JVM 空间中创建的,并且由于所有用户线程都已执行完毕,因此 JVM 已退出,那么线程 B 在哪里执行?它在哪个进程空间中执行?
【问题讨论】:
-
线程 B 与 JVM 一起死掉,它不会继续运行。
-
但我的假设是当所有用户线程完成执行时JVM退出。如果我错了,请纠正我。
-
看到JVM已经退出,为什么会认为“线程B仍在运行”?
-
我将它设计为可以运行一天以上..
-
JVM 在所有非守护线程都完成后终止。守护线程在那个时候被杀死,这就是守护线程的全部意义。如果您不希望这种情况发生,则需要至少保持一个非守护线程处于活动状态。
标签: java multithreading