守护线程和用户线程的区别是什么呢?
下文笔者讲述守护线程和用户线程的区别说明,如下所示
守护线程和用户线程的简介
用户(User)线程: 运行在前台 执行具体的任务 如: 程序的主线程、连接网络的子线程等都是用户线程 守护(Daemon)线程: 运行在后台,为其他前台线程服务 如:守护线程是JVM中非守护线程的 “佣人” 一旦所有用户线程都结束运行,守护线程会随JVM一起结束工作
守护线程和用户线程示例
main 函数所在的线程就是一个用户线程 main 函数启动时,同时JVM内部还启动了很多守护线程 如: 垃圾回收线程
守护线程和用户线程的区别
区别1: 用户线程结束,JVM 退出 此时无论有没有守护线程运行 守护线程都不会影响JVM退出
守护线程和用户线程注意事项
一、setDaemon(true)必须在start()方法前执行 否则会抛出 IllegalThreadStateException 异常 二、在守护线程中产生的新线程也是守护线程 三、不是所有的任务都可以分配给守护线程来执行,如:读写操作或计算逻辑 四、守护(Daemon)线程中不能依靠finally块来确保执行关闭或清理资源的逻辑 因为一旦所有用户线程都结束运行 守护线程会随JVM一起结束工作 所以守护(Daemon)线程中finally语句块可能无法被运行
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。