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();