Java多线程-守护线程
2023-06-13 09:14:21 时间
守护线程注意事项
注:图片来自网络(若侵则删)
守护线程特点:一旦所有用户线程都结束,守护线程会随JVM一起结束。
用代码来证明第三条所说,不是所有的任务都可以分配给守护线程来执行。
场景描述
把一个正在向文件中执行写入操作的线程设置为守护线程,在写入过程中结束用户主线程,那么该守护线程也会随之结束。
示例代码
/**
* @Author: www.itze.cn
* @Email: 814565718@qq.com
*/
class MyThread3 implements Runnable {
@Override
public void run() {
int count = 0;
File file = new File("D:" + File.separator + "word.txt");
while (count < 99) {
try {
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true));
writer.write("word: " + count+"\r\n");
System.out.println("写入word: " + count);
writer.close();
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
count++;
}
}
}
public class ThreadAndRunnable {
public static void main(String[] args) {
System.out.println("进入主线程:" + Thread.currentThread().getName());
Thread thread = new Thread(new MyThread3());
//设置守护线程
thread.setDaemon(true);
//启动线程
thread.start();
//在控制台输入任意退出主线程
new Scanner(System.in).next();
System.out.println("结束主线程:" + Thread.currentThread().getName());
}
}
控制台输入执行结果
当在控制台输入aaa时结束了主线程
文件写入结果
文件写入到word:3时结束了,证明了当用户线程都结束之后,守护线程也会随JVM结束工作。
相关文章
- Java多线程详解_java支持多线程
- Java 多线程系列(8) —— 线程同步基础
- JAVA多线程面试题_java多线程的实现方式
- java线程池的面试题_献给准备面试的你,Java线程and线程池面试题小结「建议收藏」
- think in java一_Think in Java(一):Java基础「建议收藏」
- Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)[通俗易懂]
- java基本数据类型 think in java_Think in Java(一):Java基础[通俗易懂]
- 一文带你深入理解Java多线程与高并发:Atomic类和线程同步新机制
- Java 多线程模拟卖票
- java list 转json 字符串_Java之JSON字符串与List集合之间相互转换
- java prototype是什么,Java设计模式之原型模式(Prototype模式)介绍
- 并发多线程学习(六)Java线程间的通信
- c 线程安全的单例模式-c多线程并发处理方式_Java多线程面试题:线程锁+线程池+线程同步等
- 【Java 语言】Java 多线程 一 ( 线程基础 : 线程启动 | 线程停止 | 线程暂停 | 线程优先级 | 守护线程)
- java并发编程(2):Java多线程-java.util.concurrent高级工具
- Java 多线程详解(五)——线程的声明周期编程语言
- Java 多线程详解(三)——线程的同步编程语言
- Java 多线程详解(二)——如何创建进程和线程编程语言
- 在Linux中查看Java线程:一种方法(linux查看java线程)
- Java多线程(十)——线程优先级和守护线程详解编程语言
- Java实现Redis事务管理(redis事务java)
- 挑战未来:学习Linux与Java(学linux还是java)
- 使用Java远程控制Linux 实现简单、高效的服务器管理(java控制linux)
- 实现Java实现的Redis封装类:强化Redis技术支持(redis封装类java)
- 使用Java连接SQL Server数据库,轻松实现数据交互(java连sqlserver)
- 使用Java类连接MSSQL数据库(mssql连接java类)
- Java程序员的MySQL数据库之旅(java操作mysql数据库)
- 从Java应用程序中实现Oracle配置连接(java配置oracle)
- java多线程编程之使用runnable接口创建线程