守护线程概念:
1、线程分为用户线程和守护线程
2、虚拟机必须确保用户线程执行完毕
3、虚拟机不用等待守护线程执行完毕
eg:后台记录操作日志、监控内存、垃圾回收等
package com.nqboot.boot.thread.status;
/**
* 守护线程
* 1、线程分为用户线程和守护线程
* 2、虚拟机必须确保用户线程执行完毕
* 3、虚拟机不用等待守护线程执行完毕
*/
public class TestDemo {
public static void main(String[] args) {
God god = new God();
You you = new You();
Thread thread = new Thread(god);
// 设置该线程为守护线程,true是守护线程,false不是,默认是false
thread.setDaemon(true);
thread.start();
// 被守护线程
new Thread(you).start();
}
}
class God implements Runnable {
@Override
public void run() {
while (true) {
System.out.println("上帝守护着你");
}
}
}
class You implements Runnable {
@Override
public void run() {
for (int i = 0; i < 30000; i++) {
System.out.println("开心每一天");
}
System.out.println("你不在了");
}
}
当被守护线程结束后,虚拟机不用等待守护线程执行完毕。因此当被守护线程结束后,守护线程也会被结束。