新建 DaemonThread
import lombok.extern.slf4j.Slf4j;
/**
* 主线程退出对子线程的影响
* 设置守护线程 不设置守护线程
*/
@Slf4j
public class DaemonThread {
/**
* 不设置守护线程
* 当主线程退出时, 线程不会退出
* @param args
*/
// public static void main(String[] args) {
// new Thread(new Runnable() {
// @Override
// public void run() {
// int number = 0;
// while(true){
// number++;
// log.info("我没有设置守护线程:" + number);
// try {
// Thread.sleep(500);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// }
// }).start();
// log.info("main方法退出");
// }
/**
* 设置了守护线程
* 当主线程退出时, 守护线程也会退出
* @param args
*/
public static void main(String[] args) {
Thread thread = new Thread(() -> {
int number = 0;
while (true) {
number++;
log.info("我设置了守护线程:" + number);
// try {
// Thread.sleep(500);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
});
// 设置守护线程
thread.setDaemon(true);
thread.start();
log.info("main方法退出");
}
}
总结:
- 不设置守护线程, 当主线程退出时,子 线程不会退出
- 设置了守护线程,当主线程退出时, 守护线程也会退出