【发布时间】:2013-07-20 18:15:59
【问题描述】:
如果我有一个Thread 对象,我可以在其上调用setDaemon(true) 来标记如果所有其他非守护线程都已终止,该线程不应阻止应用程序关闭。
是否有可能使这种行为自动渗透到所有子线程? IE。如果我有一个标记为守护线程的线程,是否有某种方法可以强制该线程产生的所有线程也自动标记为守护线程?
【问题讨论】:
标签: java multithreading daemon
如果我有一个Thread 对象,我可以在其上调用setDaemon(true) 来标记如果所有其他非守护线程都已终止,该线程不应阻止应用程序关闭。
是否有可能使这种行为自动渗透到所有子线程? IE。如果我有一个标记为守护线程的线程,是否有某种方法可以强制该线程产生的所有线程也自动标记为守护线程?
【问题讨论】:
标签: java multithreading daemon
是否有可能使这种行为自动渗透到所有人 子线程?
你不需要这样做,因为它是默认的:
新创建的线程最初被标记为守护线程 当且仅当创建它的线程当前被标记为守护进程 线。方法 setDaemon 可用于更改是否 线程是一个守护进程。
见this。
【讨论】:
您可以使用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") { ... };
// ...
【讨论】: