为什么JVM不等待用户应用程序生成的守护程序线程?

时间:2011-10-10 07:29:22

标签: java multithreading jvm

如果最后一个非守护程序线程已完成,则虚拟机将终止。” 我的问题是,应用程序产生的守护程序线程会发生什么?为什么JVM不等待它们完成?

2 个答案:

答案 0 :(得分:8)

守护程序线程的全部目的是,如果它是唯一运行的线程,它不会使JVM保持活动状态; 这是设计。您可能希望这样做有很多原因。

例如,对于Swing应用程序,用户可能已经在后台守护程序线程上调用了长时间运行的任务(而不是在事件调度线程上)。在任务完成之前,用户尝试退出应用程序。在此阶段,应用程序开发人员可能已经决定最好立即关闭应用程序,而不是将关闭尝试延迟到长时间运行的计算完成,因此为什么这些决定分配计算线程守护程序状态。

答案 1 :(得分:1)

因为它们是守护程序线程。这就是它的含义。这并不意味着什么。