我正在研究“ what is deamon thread in java”
它提到“守护程序线程是一个线程,它不会阻止JVM在程序完成但线程仍在运行时退出”。
我的后续问题是,为什么JVM需要退出或不退出?到底是怎么回事?我认为JVM一直在运行。是真的吗我为什么要关心JVM是否正在运行?
最佳答案
Deamon
线程就像支持您执行的实用程序线程。例如,memory management
是支持进程内存管理的Deamon
线程。如果您的进程不是Deamon线程,则它将永久运行。因此,您的过程将永远无法完成。但是,JVM应该在完成该过程后停止。因此,当您的系统仅运行守护进程线程时,JVM就会停止。
public class ThreadExample {
public static void main(String args[]){
new DeamonThread().start();
for(int i=0;i<5;i++){
System.out.println("Main thread is running "+ i+" time");
}
}
}
class DeamonThread extends Thread{
DeamonThread(){
setDaemon(true);
}
public void run(){
int count=0 ;
while (true) {
System.out.println("Hello from Deamon Thread "+count++) ;
try {
sleep(1000);
} catch (InterruptedException e) {}
}
}
}
在此示例中,主线程仅包含5次迭代。但是Deamon线程具有无限的迭代次数。如果不是恶魔线程,它将永远运行。但这是一个Deamon线程,因此JVM在主线程(而非deamon线程)完成时停止。