Java守护线程 博客分类: 多线程
程序员文章站
2024-03-22 10:24:46
...
Java中创建的线程默认都是非守护线程(前台线程),JVM启动时,通常都会有单个非守护线程(main方法),如果需要创建守护线程(后台线程),则需要在启动线程前,调用setDaemon(boolean on)方法,守护线程通常是为非守护线程服务的,例如JVM的垃圾回收,当我们的程序结束的时候,垃圾收集器也就自动停止运行了,下面的代码中dt1与dt2被标记为守护线程,则当main方法中的程序运行结束后,dt1与dt2线程中run方法也自动结束,不再运行
public class DaemonThreadDemo { public static void main(String[] args) { DaemonThread dt1 = new DaemonThread(); DaemonThread dt2 = new DaemonThread(); // 必须在线程启动前调用,因为Java创建的线程默认为非守护线程 dt1.setDaemon(true); dt2.setDaemon(true); dt1.start(); dt2.start(); for (int i = 0; i < 10; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...main..." + i); } } } class DaemonThread extends Thread { @Override public void run() { while (true) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "...run..."); } } }