【问题标题】:Propagating "daemon"-status to all child-threads in Java将“守护进程”状态传播到 Java 中的所有子线程
【发布时间】:2013-07-20 18:15:59
【问题描述】:

如果我有一个Thread 对象,我可以在其上调用setDaemon(true) 来标记如果所有其他非守护线程都已终止,该线程不应阻止应用程序关闭。

是否有可能使这种行为自动渗透到所有子线程? IE。如果我有一个标记为守护线程的线程,是否有某种方法可以强制该线程产生的所有线程也自动标记为守护线程?

【问题讨论】:

    标签: java multithreading daemon


    【解决方案1】:

    是否有可能使这种行为自动渗透到所有人 子线程?

    你不需要这样做,因为它是默认的:

    新创建的线程最初被标记为守护线程 当且仅当创建它的线程当前被标记为守护进程 线。方法 setDaemon 可用于更改是否 线程是一个守护进程。

    this

    【讨论】:

    • 嗯...看起来正确...我想我需要查看我的代码为什么这对我不起作用...
    【解决方案2】:

    您可以使用ThreadGroup,然后将 ThreadGroup 设置为守护进程:myThreadGroup.setDaemon(true),然后在创建新线程时使用此 TreadGroup:

    ThreadGroup myThreadGroup = new ThreadGroup(...);
    myThreadGroup.setDaemon(true);
    
    // ... and every time you create a thread:
    Thread myThread = new Thread(myThreadGroup, "My #n Thread") { ... };
    // ...
    

    【讨论】:

    • 问题是我无法控制子线程的创建...但总的来说是个好主意!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多