最近有人问我一个问题:
We've got the
setPriority()
method to set a thread for low priority. Then why do we need a daemon thread. What's the difference between them?
将线程标记为守护进程会改变它的调度吗?
最佳答案
We've got the setPriority() method to set a thread for low priority. Then why do we need a daemon thread. What's the difference between them?
通常,守护线程与优先级无关。当所有用户非守护线程完成时,JVM 关闭。将线程标记为守护线程意味着它可以在 JVM 退出时安全地被杀死。
优先级与调度有关——与其他准备运行的线程相比,一个线程获得时间片的频率。您可以拥有低优先级守护线程或高优先级守护线程。您可以拥有低优先级和高优先级的非守护线程。顺便说一句,线程优先级仅适用于某些特定情况和特定体系结构,作为 Java 线程专家,我从不使用它们。
这些概念是正交的(相互独立的)——至少在 Java 线程模型中是这样。
关于何时创建线程守护进程,我将守护线程用于任何我不关心它们是否在 JVM 退出时被中断的任务:保持 Activity 线程、统计处理器、日志处理等。一切应用程序的关键任务是非守护线程,必须特别中断或发出信号以某种方式退出。
关于java - 守护线程和低优先级线程的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298306/