一、守护线程
- 若JVM中没有一个非守护线程,则JVM的进程会退出
- 2处加上注释,运行JVM不会退出;打开注释,运行则会退出
- setDeamon方法将thread设为守护线程,main结束生命周期后,JVM
- 也会随之退出,thread线程也会结束
- 守护线程的作用:
-
- 守护线程具有自动结束生命周期的特性,非守护线程没有
-
- 如果JVM进程的垃圾回收线程是非守护线程,main结束垃圾回收线程不会结束,
- JVM也不会结束。
-
- 当退出某些线程的时候,可以结束某些线程,或退出JVM进程的时候,一些线程
- 自动关闭,可以考虑用守护线程
二、例子
package mian;
import java.util.concurrent.TimeUnit;
public class DaemonThread {
public static void main(String []args) throws InterruptedException {
Thread thread=new Thread(){
@Override
public void run() {
while (true){
try{
TimeUnit.MINUTES.sleep(1);
}catch (InterruptedException e){
System.out.println("I am be interrupted ? "+isInterrupted());
}
}
}
};
thread.start();
TimeUnit.MILLISECONDS.sleep(2);
System.out.println("Thread is interrupted ? "+thread.isInterrupted());
thread.interrupt();
TimeUnit.MILLISECONDS.sleep(2);
System.out.println("Thread is interrupted ? "+thread.isInterrupted());
}
}