您的位置: 首页 > 面试技巧

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

来源:华信智原  |  发布时间:2021-04-30  |  浏览量:811

守护线程和用户线程

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

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

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

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

注意事项:

    1、setDaemon(true)必须在start()方法前执行,否则会抛出 IllegalThreadStateException 异常

    2、在守护线程中产生的新线程也是守护线程

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

    4、守护 (Daemon) 线程中不能依靠 finally 块的内容来确保执行关闭或清理资源的逻辑。因为我们上面也说过了一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作,所以守护 (Daemon) 线程中的 finally 语句块可能无法被执行。


    像了解更多关于Java线程知识就来华信智原,华信智原专注于数字经济人才培养,开设了Java全栈工程师,Python全栈工程师,大数据全栈工程师,以及人工智能等高端专业,在线咨询客服老师或者直接拨打电话400-7777-699。


相关新闻

24小时报名热线

400-7777-699

报名热线:400-7777-699

微博

微信公众号

友情链接 :智原在线   美味学院   安徽新华电脑   安徽新华教育

华信智原(官网)|京ICP备09028087号-8|咨询热线:400-7777-699|地址:北京海淀区北三环中路44号院爱工场文化教育产业园|版权所有:北京华信智原教育技术有限公司
在线报名 学费详情 开班信息 职业护航 视频下载

小小华想和您聊一聊