2013-07-20 16 views
3
所有子線程

如果我有一個Thread對象,我可以調用它setDaemon(true)標記,這個線程不應該阻止應用程序關閉,如果所有其他非守護線程已終止。傳播「守護」 -status在Java

是否有可能讓這種行爲自動流下到所有的子線程?即如果我有一個被標記爲守護進程線程的線程,是否有某種方式可以強制執行,此線程產生的所有線程也會自動標記爲守護進程線程?

回答

6

是否有可能使這種行爲自動涓滴到全部 子線程?

你不需要這麼做,因爲它默認爲:

新創建的線程最初標記爲守護線程 當且僅當線程建立它目前標作爲守護進程 線程。方法setDaemon可用於更改線程是否爲守護進程。

參見this

+0

嗯...看起來正確...我想我需要去查看我的代碼爲什麼這不適合我... –

2

可以使用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") { ... }; 
// ... 
+0

問題是我無法控制子線程的創建......但總的來說這是個好主意! –