我正在研究“ 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线程)完成时停止。

09-06 07:23