首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中用户线程和守护线程有什么不同?

在java中用户线程和守护线程有什么不同?
EN

Stack Overflow用户
提问于 2013-01-11 14:25:24
回答 3查看 26.6K关注 0票数 24

可能重复:

What is Daemon thread in java

When are daemon threads useful?

我对Java中用户线程和守护线程之间的区别感到困惑。

你能告诉我:

  1. 在Java中用户线程和守护线程有什么区别?
  2. 在哪种情况下会使用守护线程?你能给我举几个例子吗?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-11 14:28:50

一旦最后一个非JVM线程终止,jvm就会退出。这意味着如果您创建的任何线程仍在运行,jvm将不会关闭。守护程序线程是不会阻止JVM关闭的线程。通常,你会使用它们来完成一些后台任务,如果用户要求关闭你的应用程序,你不希望这些任务继续运行。

此外,您的问题已经在这里被问到(并得到了回答)- What is Daemon thread in Java?

守护进程线程的一些常见用例(根据个人经验)可能包括

轮询远程系统的状态changes

  • background工作线程的
  • 后台线程(如发送电子邮件通知、snmp、用于执行计划维护的whatever)
  • custom计时器线程
票数 23
EN

Stack Overflow用户

发布于 2013-01-11 14:45:51

第二个问题:

当所有普通线程都已终止时,守护程序线程将自动终止。

您可以使用守护程序线程在应用程序中执行一些内务处理或清理工作。守护程序线程用于后台支持任务,并且仅在普通线程执行时才需要。GC线程是一个守护线程。

票数 4
EN

Stack Overflow用户

发布于 2013-01-11 14:46:51

用户线程是由应用程序(用户)创建的线程,在大多数情况下,守护线程是由Java VM创建的,用于为用户线程提供服务。当用户线程退出时,VM区分线程是用户还是守护进程。在用户线程退出的情况下,VM将检查是否有其他用户线程正在运行。如果有,它将调度下一个线程(用户或守护进程)。如果没有其他用户线程在运行,只有守护进程线程在运行,则VM的实例也将退出。

这两种类型的线程之间的区别很简单:如果Java运行时确定在应用程序中运行的唯一线程是守护进程线程(即,不存在任何用户线程),则Java运行时会立即关闭应用程序,从而有效地停止所有守护进程线程。为了使应用程序继续运行,它必须始终至少有一个活动的用户线程。在所有其他方面,Java运行时以完全相同的方式处理守护进程线程和用户线程。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14272850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档