我读过,守护程序线程由JVM使用和控制。 JVM创建它们并监视它们的终止。用户线程由用户控制。
还有人说,我们可以通过调用setDaemon()
方法将用户线程转换为守护进程线程。
但是, what is the use of such conversion
?一旦JVM成为dameon线程,JVM是否会控制用户线程?
如果我错过了什么,请告诉我。
感谢。
答案 0 :(得分:7)
我相信用户和守护程序线程总是在JVM的控制之下。 (如果情况并非如此,谁将负责?)
这是区别(来自http://www.xyzws.com/javafaq/what-is-difference-between-user-and-daemon-thread-in-java/196):
这两种类型之间的区别 线程很简单:如果 Java运行时确定唯一的 在应用程序中运行的线程 守护程序线程(即,没有 存在的用户线程)Java 运行时迅速关闭 应用,有效地阻止所有 守护进程线程已经死亡。 为了申请 继续运行,它必须始终有 至少一个实时用户线程。在所有 Java运行时处理的其他方面 守护程序线程和用户线程 完全相同的方式。
答案 1 :(得分:7)
守护程序线程不会阻止应用程序在仍在工作时关闭。它们更适用于在应用程序处于活动状态时需要完成的任务,但是否则可以安全地杀死它们。