线程介绍
线程是程序执行的一个路径,每一个线程都是有自己的局部变量表、程序计数器(指向正在执行的指令指针)以及各自的生命周期。
生命周期
- NEW
- RUNNABLE
- RUNNING
- BLOCKED
- TERMINATED
守护线程
JVM中没有一个非守护线程,那么JVM会退出。守护线程具备自动结束生命周期的特征,当main线程完成工作后,守护线程也会随之结束。
代码演示
public static void main(String[] args) throws InterruptedException{
Thread thread = new Thread(() -> {
while (true){
try {
Thread.sleep(1);
}catch (InterruptedException e){
e.printStackTrace();
}
}
});
// 设置守护线程
// thread.setDaemon(true);
thread.start();
Thread.sleep(2000);
System.out.println("Main Thread finished");
}
上段代码是main线程中再次创建了一个Thread,当运行次代码时
控制台已经打印了Main Thread finished
你会发现JVM永远不会退出。因为新创建的线程是非守护线程。
去掉注释,把线程改为守护线程。
main线程结束,JVM进程退出。
应用场景:
后台轮询线程,刷取订单状态的线程可设置守护线程。