首页 > 其他分享 >守护线程和用户线程有什么区别呢?

守护线程和用户线程有什么区别呢?

时间:2023-03-28 13:01:32浏览次数:33  
标签:Daemon Thread 用户 线程 JVM 守护

在 Java 中通常有两种线程:守护线程(Daemon Thread)和用户线程(User Thread)。

  • 守护线程:是一种特殊的线程,在后台默默地完成一些系统性的服务,比如垃圾回收线程、JIT 线程都是守护线程
  • 用户线程:可以理解为是系统的工作线程,它会完成这个程序需要完成的业务操作。如我们使用 Thread 创建的线程在默认情况下都属于用户线程。

main 函数所在的线程就是一个用户线程,main 函数启动的同时在 JVM 内部同时还启动了好多守护线程,比如垃圾回收线程。

比较明显的区别之一是用户线程结束,JVM 退出,不管这个时候有没有守护线程运行。而守护线程不会影响 JVM 的退出。

注意事项:

  • setDaemon(true)必须在start()方法前执行,否则会抛出 IllegalThreadStateException 异常
  • 在守护线程中产生的新线程也是守护线程
  • 不是所有的任务都可以分配给守护线程来执行,比如读写操作或者计算逻辑
  • 守护 (Daemon) 线程中不能依靠 finally 块的内容来确保执行关闭或清理资源的逻辑。因为我们上面也说过了一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作,所以守护 (Daemon) 线程中的 finally 语句块可能无法被执行。

 

标签:Daemon,Thread,用户,线程,JVM,守护
From: https://www.cnblogs.com/xfeiyun/p/17264759.html

相关文章

  • python apscheduler 定时任务的基本使用-8-线程执行器ThreadPoolExecutor
    pythonapscheduler定时任务的基本使用-8-线程执行器ThreadPoolExecutor1、线程执行器ThreadPoolExecutor先说个人总结假设启动线程数为N,任务数为M,misfire_grace_tim......
  • C#:多线程操作Dictionary
    为了在多线程环境下操作Dictionary,我们需要确保线程安全。其中一种实现方式是使用ConcurrentDictionary类,该类位于System.Collections.Concurrent命名空间中。Concurrent......
  • linux内核线程优先级配置
    linux内核线程优先级配置/*referencedriver/spi/spi.c*/#include<linux/sched/rt.h>#include<uapi/linux/sched/types.h>staticstructsched_paramparam={......
  • MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度
    MATLAB代码:考虑用户舒适度的冷热电多能互补综合能源系统优化调度关键词:用户舒适度综合能源PMV优化调度仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是考虑用户......
  • 线程池
    1、线程池出现原因以前写多线程时,用到线程的时候就创建(浪费时间);用完之后线程就消失(浪费资源)。2、线程池主要核心原理  3、线程池代码实现(1)创建线程池(2)提交任务(3)......
  • Linux用户和用户组管理/etc目录解释
    1. /etc/passwd内容解释root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinadmin:x:3:3:admin:/d......
  • 数据分析-家用热水器用户行为分析与事件识别
    显示数据importpandasaspdimportnumpyasnpdata=pd.read_excel('D:/人工智能&软件工程/数据挖掘与分析/data/original_data.xls')data[u'发生时间']=pd.to_......
  • 多线程 wait() notify的用法
    main类 packageendual;publicclassMainApp{ publicstaticvoidmain(String[]args){ Queryq=newQuery(0); Threadthread=newThread(newThrea......
  • 多线程——生产者和消费者(等待唤醒机制)
    生产者和消费者(等待唤醒机制)生产者消费者模式是一个十分经典的多线程协作的模式举例:   实现方式一: 线程的方法代码编写技巧,如run():步骤:(1)循环;(2)同步代码块;(3)判断......
  • 线程的状态
    多线程的6种状态  注意:Java中没有定义运行状态,所以线程只有6种状态。因为线程抢到CPU的执行权后,就交给操作系统了,在这个运行过程中虚拟机就不用管了,所以Java没有定义......