java守护线程是为主线程服务的,如果主线程死掉,那么守护线程也会死掉。如果主线程一直存在,守护线程也会一直存在。
守护线程不会像普通线程一样,因为执行完,就死掉。只要主线程未死,就不会死掉。
java中垃圾回收线程就是一个典型的守护线程。
测试代码:
线程
public class ThreadDemo implements Runnable {
public void run() {
while (true) {
for (int i = 1; i <= 100; i++) {
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class Test { public static void main(String[] args) {
Thread daemonThread = new Thread(new ThreadDemo());
daemonThread.setName("测试thread"); // 设置为守护进程 daemonThread.setDaemon(true);
daemonThread.start();
System.out.println("isDaemon = " + daemonThread.isDaemon());
Thread t = new Thread(new ThreadDemo());
t.start();
}
}
因为有线程t 的存在,守护线程daemonThread 一直执行,当将下面代码注释掉时,守护线程daemonThread ,随着main结束,而结束。
Thread t = new Thread(new ThreadDemo());
t.start();
转载于:https://blog.51cto.com/11110895/1786814