为什么主线程结束后setdaemon属性没有结束子线程?

时间:2019-06-05 07:21:07

标签: 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);
        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;

        }

    }


}

先谢谢了。

1 个答案:

答案 0 :(得分:0)

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

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

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