守护程序线程何时有用?

use*_*967 44 java

我知道Deamon线程背景线程.我们可以通过调用创建自己的守护进程线程setDaemon(true).

我的问题是:为什么以及何时需要创建我们的线程作为守护程序线程?

JB *_*zet 57

当所有正在运行的线程都是守护程序线程时,JVM退出.所以想象一下,你正在写一个简单的游戏,你的主要方法循环,​​直到你决定退出.并且想象一下,在游戏开始时,您启动一​​个线程,无休止地轮询某个网站以触发警报.当您决定结束游戏时,您希望JVM退出.你不希望无休止的轮询阻止游戏结束.因此,您将此轮询线程设置为守护程序线程.

  • 这一切都取决于守护程序线程的作用.如果它写入磁盘,您最好正确地停止它以避免以损坏的文件结束.例如,如果它只是通过一些警报刷新GUI,那么你就不会关心线程是否突然停止. (5认同)

Snp*_*nps 12

当所有"正常"线程终止时,JVM会自动终止Deamon线程.正常线程永远不会自动终止.


pan*_*eck 5

您希望通过基本上用户线程提供给您的消费者而无需任何用户交互的服务构成了将用户线程设置为守护进程的主要用例.

因此,在用户线程存在之前,JVM保证守护程序线程不断运行.你可以找到像GC,UI线程等的例子.那些是守护进程.

希望能帮助到你.