守护线程,进程结束,线程也会结束
非守护线程,进程结束,线程继续运行
示例代码,当thread1结束运行的时候,thread2也随之结束
public class DaemonThread {
public static void main(String[] args) {
DaemonThread1 thread1 = new DaemonThread1();
DaemonThread2 thread2 = new DaemonThread2();
thread2.setDaemon(true);
System.out.println("thread1 是不是守护进程"+thread1.isDaemon());
System.out.println("thread2 是不是守护进程"+thread2.isDaemon());
thread1.start();
thread2.start();
}
}
class DaemonThread1 extends Thread {
@Override
public void run() {
super.run();
for (int i = 0; i < 5; i++) {
System.out.println("线程" + Thread.currentThread().getName() + "第" + i + "次执行");
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class DaemonThread2 extends Thread {
@Override
public void run() {
super.run();
for (int i = 0; i < 55555; i++) {
System.out.println("线程" + Thread.currentThread().getName() + "第" + i + "次执行");
try {
Thread.sleep(500L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行结果
thread1 是不是守护进程false
thread2 是不是守护进程true
线程Thread-0第0次执行
线程Thread-1第0次执行
线程Thread-0第1次执行
线程Thread-1第1次执行
线程Thread-0第2次执行
线程Thread-1第2次执行
线程Thread-1第3次执行
线程Thread-0第3次执行
线程Thread-1第4次执行
线程Thread-0第4次执行
线程Thread-1第5次执行