守护线程
用来守护用户线程的,当用户线程执行完毕,而守护线程并没有执行完毕jvm会自动退出。
public class Demo02 implements Runnable {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
Thread th = new Thread(demo02);
th.setDaemon(true);
th.start();
for (int i = 1; i <=20 ; i++) {
System.out.println("主线程运行"+i+"秒");
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void run() {
for (int i = 1; i <=20 ; i++) {
System.out.println("守护线程执行"+i+"秒");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
上述代码中主线程执行20次每次休眠5毫秒,守护线程执行20次内次休眠10毫秒,执行程序,主线程执行了20次时守护线程执行10次,程序就停止了,并没有将剩余的10次执行完。
注意事项
- 线程默认是用户线程
- 垃圾回收机制是最典型的守护线程
- 设置守护线程要在就绪状态之前