3

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

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

4

2 回答 2

6

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

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

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

看到这个

于 2013-07-20T10:04:05.603 回答
2

您可以使用 a ThreadGroup,然后将 ThreadGroup 设置为 daemon: 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") { ... };
// ...
于 2013-07-20T10:03:38.233 回答