“如果最后一个非守护程序线程已完成,则虚拟机将终止。” 我的问题是,应用程序产生的守护程序线程会发生什么?为什么JVM不等待它们完成?
答案 0 :(得分:8)
守护程序线程的全部目的是,如果它是唯一运行的线程,它不会使JVM保持活动状态; 这是设计。您可能希望这样做有很多原因。
例如,对于Swing应用程序,用户可能已经在后台守护程序线程上调用了长时间运行的任务(而不是在事件调度线程上)。在任务完成之前,用户尝试退出应用程序。在此阶段,应用程序开发人员可能已经决定最好立即关闭应用程序,而不是将关闭尝试延迟到长时间运行的计算完成,因此为什么这些决定分配计算线程守护程序状态。
答案 1 :(得分:1)
因为它们是守护程序线程。这就是它的含义。这并不意味着什么。