如果我有一個Thread
對象,我可以調用它setDaemon(true)
標記,這個線程不應該阻止應用程序關閉,如果所有其他非守護線程已終止。傳播「守護」 -status在Java
是否有可能讓這種行爲自動流下到所有的子線程?即如果我有一個被標記爲守護進程線程的線程,是否有某種方式可以強制執行,此線程產生的所有線程也會自動標記爲守護進程線程?
如果我有一個Thread
對象,我可以調用它setDaemon(true)
標記,這個線程不應該阻止應用程序關閉,如果所有其他非守護線程已終止。傳播「守護」 -status在Java
是否有可能讓這種行爲自動流下到所有的子線程?即如果我有一個被標記爲守護進程線程的線程,是否有某種方式可以強制執行,此線程產生的所有線程也會自動標記爲守護進程線程?
是否有可能使這種行爲自動涓滴到全部 子線程?
你不需要這麼做,因爲它默認爲:
新創建的線程最初標記爲守護線程 當且僅當線程建立它目前標作爲守護進程 線程。方法setDaemon可用於更改線程是否爲守護進程。
參見this。
可以使用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") { ... };
// ...
問題是我無法控制子線程的創建......但總的來說這是個好主意! –
嗯...看起來正確...我想我需要去查看我的代碼爲什麼這不適合我... –