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

乔欣 Java面经 发布时间:2022-11-10 22:23:00 阅读数:2250 1 并发编程面试题(2023最新版)
下文笔者讲述守护线程和用户线程的区别说明,如下所示

守护线程和用户线程的简介

用户(User)线程:
     运行在前台
     执行具体的任务
      如:
	    程序的主线程、连接网络的子线程等都是用户线程

守护(Daemon)线程:
     运行在后台,为其他前台线程服务
     如:守护线程是JVM中非守护线程的 “佣人”
        一旦所有用户线程都结束运行,守护线程会随JVM一起结束工作

守护线程和用户线程示例

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

守护线程和用户线程的区别

区别1:
   用户线程结束,JVM 退出
   此时无论有没有守护线程运行
    守护线程都不会影响JVM退出

守护线程和用户线程注意事项

 一、setDaemon(true)必须在start()方法前执行
    否则会抛出 IllegalThreadStateException 异常
 
 二、在守护线程中产生的新线程也是守护线程

 三、不是所有的任务都可以分配给守护线程来执行,如:读写操作或计算逻辑

 四、守护(Daemon)线程中不能依靠finally块来确保执行关闭或清理资源的逻辑
     因为一旦所有用户线程都结束运行
      守护线程会随JVM一起结束工作
	  所以守护(Daemon)线程中finally语句块可能无法被运行
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202211/16680906614859.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者