1. 程式人生 > >後臺線程(daemon)

後臺線程(daemon)

繼續 通用 系統 java編程 如果 col 引用 後臺線程 資源

概念 所謂後臺線程,是指在程序運行的時候在後臺提供一種通用服務的線程,並且這種線程並不屬於程序中不可或缺的部分。因此,當所有的非後臺線程結束時,程序也就終止了,同時會殺死進程中的所有後臺線程。反過來說,只要有任何非後臺線程還在運行,程序就不會終止。比如,執行main()的就是一個非後臺線程。——《Java編程思想》 既然是通用服務線程,能隨便關閉嗎,關閉了,不就會影響需要它的程序了嗎? 註意,這裏指的後臺線程是針對某個程序的。它的Scope是某個應用,而不是整個操作系統。如果整個應用都沒有再需要它的線程的時候,它的存在還有什麽意義呢。所以當所有非後臺線程結束的時候,後臺線程也就沒有什麽存在的必要了。 後臺線程是什麽標識,是如何體現的?
Thread對象有一個setDaemon的方法,只要設置為true即可 誰來殺死後臺線程,什麽時候殺死? 當最後一個非後臺線程結束的時候,JVM會自動殺死所有標識為daemon的線程。而且在沒有非後臺線程的時候,這些後臺線程就會被殺死。 為什麽要設置成後臺線程? 也可以問,為什麽有些線程要隨著程序的結束而結束。是這樣的,因為有些線程是主線程之外在運行的,它在本地有引用,當程序結束的時候,垃圾回收器不會回收它,它仍然在運行。這樣就很麻煩。它會繼續占用電腦的資源。 註:如果後臺線程創建新的線程,那麽這些它的子線程都是後臺線程。

後臺線程(daemon)