我完全了解将一个线程标记为JVM出口上的守护程序线程的影响(如果所有非守护程序线程都退出,JVM将退出.)
将线程设置为守护进程是否还有其他副作用?
(作为一个完整的旁边,除了语义之外真的无关紧要的是守护程序线程在这种情况下不倒退的意思:守护程序线程不应该使JVM保持活动状态...例如,如果我编写自己的HTTP守护程序并且开始运行,只要该线程还活着,我不希望JVM保持活动状态吗?或者术语'守护进程'还有其他语义吗?)
正如您所看到的,这意味着该线程已分离,并且只要 JVM 运行就会运行,除非您显式停止它。根据规范,只要任何非守护线程正在运行,JVM 就会保持运行。
\n\n除此之外,它没有什么意义。
\n\n你可能会说这是向后的 \xe2\x80\x94 毕竟,shutdown(8)杀死了守护进程 \xe2\x80\x94 但 JVM 应该像一个行为良好的进程,否则,这意味着人们应该能够期望它能够终止而不需要被杀死。因此,该规范是基于更常见用例的设计决策。
\n