守护线程定义:所谓守护线程,是指在程序运行的时候在后台提供一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。
因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。
/** * @author wsy */ public class DaemonThreadDemo { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } int count = 0; for (int i = 0; i < 100; i++) { count += i; } //不会打印的输出 守护线程为用户线程服务 用户线程终止守护线程自动终止 System.out.println("count的值为: " + count); } }); thread.setDaemon(true); thread.start(); System.out.println("main线程终止 jvm退出"); } }
守护线程的特点
- 守护线程是运行在程序后台的线程;
- 守护线程创建的线程,依然是守护线程;
- 守护线程不会影响 JVM 的退出,当 JVM 只剩余守护线程时,JVM 进行退出;
- 守护线程在 JVM 退出时,自动销