守护程序线程是作为低优先级线程运行的后台服务线程,并执行后台操作(如垃圾回收)。如果仅剩余守护程序线程,则JVM退出。
Thread类的setDaemon()方法用于将特定线程标记/设置为守护程序线程或用户线程。当仅运行的所有线程都是守护程序线程时,Java虚拟机将退出。必须在线程启动之前调用此方法。
class adminThread extends Thread { adminThread() { setDaemon(false); } public void run() { boolean d = isDaemon(); System.out.println("daemon = " + d); } } public class Tester { public static void main(String[] args) throws Exception { Thread thread = new adminThread(); System.out.println("thread = " + thread.currentThread()); thread.setDaemon(false); thread.start(); } }
输出结果
thread = Thread[main,5,main] daemon = false