【发布时间】:2020-01-30 18:19:37
【问题描述】:
如果我们可以使用普通线程,为什么要使用守护线程。什么是守护线程可以做而普通线程不能做的事情。因为据我所知,这两者并没有太大区别
【问题讨论】:
-
关于“重复”的答案强调 what 而不是 why。 why 只是为了方便。如果您的程序有一个线程不需要在程序结束时完全关闭,那么将线程设置为守护进程可以让您不必编写代码来关闭它。
标签: java multithreading daemon
如果我们可以使用普通线程,为什么要使用守护线程。什么是守护线程可以做而普通线程不能做的事情。因为据我所知,这两者并没有太大区别
【问题讨论】:
标签: java multithreading daemon
当最后一个非守护线程完成后,Java VM 将退出。也就是说,非守护线程会阻止虚拟机在运行时退出,而守护线程则不会。
您将使用守护线程进行只有在任何非守护线程正在运行时才有意义的操作。一个这样的例子(由 VM 内部使用)是垃圾回收。
对守护线程的一个警告是,VM 会以困难的方式杀死它们,甚至不保证finally 块的执行。这使得守护线程对于任何对进程本身有影响的操作都很危险。
【讨论】: