Java 为什么setdaemon属性在主线程结束时不结束子线程?

Java 为什么setdaemon属性在主线程结束时不结束子线程?,java,multithreading,daemon,Java,Multithreading,Daemon,我正在运行下面的代码来理解守护进程线程的概念和线程终止。即使主方法完成后,程序仍会继续打印。我是不是遗漏了什么 package threading; public class ThreadInterruption { public static void main(String[] args) { Thread t = new Thread(new RanThread()); t.start(); t.setDaemon(true);

我正在运行下面的代码来理解守护进程线程的概念和线程终止。即使主方法完成后,程序仍会继续打印。我是不是遗漏了什么

package threading;

public class ThreadInterruption {

    public static void main(String[] args) {
        Thread t = new Thread(new RanThread());
        t.start();
        t.setDaemon(true);
        t.interrupt();
    }

}

class RanThread implements Runnable{

    @Override
    public void run() {
        int count=0;
        while(true) {
            System.out.println("Ha Ha Ha "+ count);
            count=count+1;

        }

    }


}

提前谢谢

在启动线程之前,必须将其设置为守护进程

如果您阅读API文档,它会声明“必须在线程启动之前调用此方法。”


因此,交换start和setDaemon行,您应该会做得很好。

您必须在启动线程之前将其设置为守护进程

如果您阅读API文档,它会声明“必须在线程启动之前调用此方法。”

因此,交换start和setDaemon行,您应该会很好