可能重复:
When are daemon threads useful?
我对Java中用户线程和守护线程之间的区别感到困惑。
你能告诉我:
发布于 2013-01-11 14:28:50
一旦最后一个非JVM线程终止,jvm就会退出。这意味着如果您创建的任何线程仍在运行,jvm将不会关闭。守护程序线程是不会阻止JVM关闭的线程。通常,你会使用它们来完成一些后台任务,如果用户要求关闭你的应用程序,你不希望这些任务继续运行。
此外,您的问题已经在这里被问到(并得到了回答)- What is Daemon thread in Java?
守护进程线程的一些常见用例(根据个人经验)可能包括
轮询远程系统的状态changes
发布于 2013-01-11 14:45:51
第二个问题:
当所有普通线程都已终止时,守护程序线程将自动终止。
您可以使用守护程序线程在应用程序中执行一些内务处理或清理工作。守护程序线程用于后台支持任务,并且仅在普通线程执行时才需要。GC线程是一个守护线程。
发布于 2013-01-11 14:46:51
用户线程是由应用程序(用户)创建的线程,在大多数情况下,守护线程是由Java VM创建的,用于为用户线程提供服务。当用户线程退出时,VM区分线程是用户还是守护进程。在用户线程退出的情况下,VM将检查是否有其他用户线程正在运行。如果有,它将调度下一个线程(用户或守护进程)。如果没有其他用户线程在运行,只有守护进程线程在运行,则VM的实例也将退出。
这两种类型的线程之间的区别很简单:如果Java运行时确定在应用程序中运行的唯一线程是守护进程线程(即,不存在任何用户线程),则Java运行时会立即关闭应用程序,从而有效地停止所有守护进程线程。为了使应用程序继续运行,它必须始终至少有一个活动的用户线程。在所有其他方面,Java运行时以完全相同的方式处理守护进程线程和用户线程。
https://stackoverflow.com/questions/14272850
复制相似问题