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

什么是Java中的守护进程线程?

什么是Java中的守护进程线程?

jeck猫 2019-06-05 16:39:33
什么是Java中的守护进程线程?有人能告诉我Java中有什么守护进程线程吗?
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

守护进程线程是一个线程,它不会阻止JVM在程序完成时退出,但线程仍在运行。守护进程线程的一个示例是垃圾收集。

您可以使用setDaemon(boolean)方法更改Thread线程启动之前的守护进程属性。


查看完整回答
反对 回复 2019-06-05
?
哔哔one

TA贡献1854条经验 获得超8个赞

还有几点(参考:Java并发在实践中的应用)

  • 创建新线程时,它继承其父线程的守护进程状态。
  • 当所有非守护进程线程完成时,jvm将停止,并且任何剩余的线程都会停止。守护进程线程被放弃:

    由于这个原因,应该谨慎地使用守护进程线程,使用它们执行任何类型的I/O任务都是危险的。

    • 最后,没有执行块。,

    • 堆栈没有打开-JVM只是退出。

    • 由于这个原因,应该谨慎地使用守护进程线程,使用它们执行任何类型的I/O任务都是危险的。

查看完整回答
反对 回复 2019-06-05
?
慕的地10843

TA贡献1785条经验 获得超8个赞

以上所有答案都很好。这里有一个简单的代码片段,来说明两者之间的区别。中的true和false的每个值都尝试它。setDaemon.

public class DaemonTest {

    public static void main(String[] args) {
        new WorkerThread().start();

        try {
            Thread.sleep(7500);
        } catch (InterruptedException e) {
            // handle here exception
        }

        System.out.println("Main Thread ending") ;
    }

}

class WorkerThread extends Thread {

    public WorkerThread() {
        // When false, (i.e. when it's a user thread),
        // the Worker thread continues to run.
        // When true, (i.e. when it's a daemon thread),
        // the Worker thread terminates when the main 
        // thread terminates.
        setDaemon(true); 
    }

    public void run() {
        int count = 0;

        while (true) {
            System.out.println("Hello from Worker "+count++);

            try {
                sleep(5000);
            } catch (InterruptedException e) {
                // handle exception here
            }
        }
    }
}


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 1121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号