守护线程注意事项
注:图片来自网络(若侵则删)
守护线程特点:一旦所有用户线程都结束,守护线程会随JVM一起结束。
用代码来证明第三条所说,不是所有的任务都可以分配给守护线程来执行。
场景描述
把一个正在向文件中执行写入操作的线程设置为守护线程,在写入过程中结束用户主线程,那么该守护线程也会随之结束。
示例代码
代码语言:javascript复制/**
* @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 "rn");
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结束工作。