java - 如果我们可以使用普通线程,为什么还要使用守护线程。守护线程可以做但普通线程不能做的事情是什么

标签 java multithreading daemon

如果我们可以使用普通线程,为什么还要使用守护线程。守护线程可以做但普通线程不能做的事情是什么?因为据我所知,这两者没有太大区别

最佳答案

当最后一个非守护线程完成时,Java VM 将退出。也就是说,只要 VM 正在运行,非守护线程就会阻止 VM 退出,而守护线程则不会。

您可以使用守护线程来执行只有在任何非守护线程正在运行时才有意义的操作。其中一个示例(由虚拟机内部使用)是垃圾收集。

关于守护线程的一个警告是,虚拟机会以硬的方式杀死它们,甚至不保证finally block 的执行。这使得守护线程对于任何对进程本身产生影响的操作来说都是危险的。

关于java - 如果我们可以使用普通线程,为什么还要使用守护线程。守护线程可以做但普通线程不能做的事情是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58185092/

相关文章:

daemon - 如何使 uwsgi --emperor 作为守护进程运行

macos - Mac OSX上的XAMPP:为什么以 'daemon'身份运行?

java - 在 Android 上访问原始 GPS 数据

java - Liquibase 为 postgres 创建架构

java - jSoup 从 <span> 类中获取文本

Java SSL 连接和未知服务器证书警告

java - DatagramPacket Sender 线程运行速度太快

java - 使用 Mockito 模拟服务器-客户端连接

c# - 一次访问字段的最佳线程安全方式,即用于处理

linux - Upstart 不会开始我的工作