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