【java 多线程】守护线程与非守护线程的详解

Java守护线程与非守护线程详解 Java 中有两类线程:User Thread(用户线程)和 Daemon Thread(守护线程)。用户线程即运行在前台的线程,而守护线程是运行在后台的线程。守护线程的作用是为其他前台线程的运行提供便利服务,而且仅在普通、非守护线程仍然运行时才需要。 守护线程的特点是,当 JVM 检测仅剩一个守护线程,而用户线程都已经退出运行时,JVM 就会退出,因为没有了被守护的对象,也就没有继续运行程序的必要了。如果有非守护线程仍然存活,JVM 就不会退出。 用户可以用 Thread 的 setDaemon(true)方法设置当前线程为守护线程。但是,必须小心确保其他所有非守护线程消亡时,不会由于它的终止而产生任何危害。 需要注意以下几点: 1. setDaemon(true) 必须在调用线程的 start()方法之前设置,否则会抛出 IllegalThreadStateException 异常。 2. 在守护线程中产生的新线程也是守护线程。 3. 不要认为所有的应用都可以分配给守护线程来进行服务,比如读写操作或者计算逻辑。 守护线程的应用场景: 1. 垃圾回收线程:垃圾回收线程是一个典型的守护线程,它的作用是为其他前台线程提供服务,回收不再使用的对象。 2. 计时器线程:计时器线程可以设置为守护线程,以便在后台运行,提供计时服务。 代码示例: ```java package day003; import java.util.Date; import java.util.TimerTask; public class MyTask extends TimerTask { public void run() { System.out.println("任务执行了,时间为:"+new Date()); } } ``` ```java package day003; import java.util.Calendar; import java.util.Date; import java.util.Timer; public class TimerTaskRun { public static void main(String[] args) { System.out.println("系统当前时间:"+new Date()); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.SECOND, 10); Date date = calendar.getTime(); MyTask task = new MyTask(); Timer timer = new Timer(); timer.schedule(task, date); } } ``` 运行结果: 系统当前时间:Mon Mar 19 15:11:47 CST 2018 任务执行了,时间为:Mon Mar 19 15:11:57 CST 2018 从运行结果可以看出,Timer 任务执行完毕后,进程仍然保持红色状态,未被销毁。这是因为 Timer 任务被设置为守护线程,进程未被销毁。 在 Java 中,Timer 的源码中可以看到,Timer 的构造方法中没有设置守护线程,这意味着 Timer 任务默认不是守护线程。如果需要 Timer 任务在后台运行,可以使用 setDaemon(true) 方法将其设置为守护线程。 守护线程是 Java 中的一种特殊线程,具有特定的生命周期和行为。它的应用场景广泛,包括垃圾回收、计时器等。但是,需要注意守护线程的使用限制和注意事项,以免产生意外的结果。





















- 杏花朵朵2023-07-29这篇文件给出了一些实际应用中的例子,增强了对守护线程和非守护线程的理解,并且对于新手来说十分友好。
- 优游的鱼2023-07-29这篇文章以实际的案例帮助读者理解守护线程和非守护线程的概念,不论是初学者还是有经验的开发者都会受益。
- 大禹倒杯茶2023-07-29文章通俗易懂,用生动的例子说明了守护线程和非守护线程的不同特性,让人容易理解。
- H等等H2023-07-29这篇文章很详细地讲解了守护线程和非守护线程的概念,内容真实可信,有助于理解Java多线程编程。
- KateZeng2023-07-29这篇文章对守护线程和非守护线程有很好的解析,同时也提到了使用守护线程的注意事项,让读者受益匪浅。

- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于SVM和ANN的MATLAB GUI智能废弃金属分类分级系统
- 永磁同步电机PMSM的“无差电流预测控制+模型参考自适应参数辨识”技术
- COMSOL电池模型中Nernst-Planck方程的详细解析与应用 · 边界条件 最新版
- COMSOL模拟THM耦合下CO2-ECBM的驱替过程及多元气体吸附与煤体变形动态研究 THM耦合
- 模块化多电平换流器(MMC)与柔性直流输电系统(HVDC)的技术解析及应用
- 孤岛微电网DOS攻击防御的二次控制技术及混合动态事件触发机制 权威版
- 永磁同步电机模型预测电流控制(MPCC):基于代价函数寻优的优化控制策略及应用 - 模型预测控制
- 基于Simulink平台的ABS仿真模型:PID控制策略下的防抱死制动系统性能评估与分析
- (源码)基于Arduino UNO的汽车停车系统项目.zip
- Abaqus中Dload与Vdload子程序实现四轴及多轴汽车动态荷载模拟
- (源码)基于Arduino的穿戴式个人空气质量监测器.zip
- 基于GWO-SVM的单变量时序递归预测:MATLAB实现与应用 - 递归预测
- PMSM无传感器控制Simulink仿真及其基于滑膜观测器的FOC控制 - 配3页英文文献
- (源码)基于Python的豆瓣电影数据分析与可视化系统.zip
- 基于CS统计模型与UKF无迹卡尔曼滤波的三维路径跟踪预测仿真的研究:Matlab平台的实现与评估
- (源码)基于C++的跳表KV存储引擎.zip


