Java中的守护线程(Daemon Thread)是一种特殊的线程,它的生命周期依赖于其他非守护线程(即用户线程)。当所有用户线程结束时,无论守护线程是否正在运行,JVM都会自动退出,守护线程会被强制终止。
核心特性
-
依赖关系
守护线程的存在是为了服务用户线程。当所有用户线程结束时,守护线程会自动终止。- 例如:垃圾回收(GC)线程是典型的守护线程,它会随用户线程结束而终止。
-
设置方法
通过setDaemon(true)
将线程标记为守护线程,必须在调用start()
方法前设置,否则会抛出IllegalThreadStateException
。Thread daemonThread = new Thread(() -> { while (true) { System.out.println("守护线程运行中..."); } }); daemonThread.setDaemon(true); // 设置为守护线程 daemonThread.start();
-
默认非守护线程
默认情况下,线程是用户线程(isDaemon(