为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2023-01-05 17:02:51

我正在运行一段代码来理解守护进程线程的概念和线程终止。即使在 main 方法完成后,程序仍会继续打印。我在这里错过了什么吗?


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 回答

?
GCT1015

TA贡献1576条经验 获得超4个赞

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

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

所以交换 start 和 setDaemon 行,你应该很好。


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信