您想要設計一個程式,除了主執行緒之外,其運用了一個執行緒於背景進行相關運算工作,您的程式可能像是這樣:
package onlyfun.caterpillar; 您的執行緒已經運行到最後一個陳述了,這時應該是工作結束的時候,但您的另一個執行緒還在運作,您怎麼停止它?在最後加上一行使用System.exit ()?這雖然也可以,但這只是強迫程式結束,而且這個方法並不是隨時可以適用! 一個Daemon執行緒是一個在背景執行服務的執行緒,例如網路伺服器傾聽連接埠的服務、隱藏的系統執行緒如垃圾收集執行緒或其它JVM 建立的執行緒,如果所有的非Daemon的執行緒都結束了,則Daemon執行緒自動就會終止。 從Main函式開始的是一個非Daemon執行緒,如果您希望某個執行緒在非Daemon執行緒都結束後也跟著終止,那麼您要將它設定為Daemon執行 緒,下面這個程式是個簡單的示範:
package onlyfun.caterpillar; 這個程式在主執行緒結束之後,Daemon也就跟著結束了,所以它不會像上面這個程式,不斷的列印T字元;您可以使用setDaemon()方法來設定一 個執行緒是否為Daemon執行緒,使用isDaemon()方法則可以判斷該執行緒是否為Daemon執行緒。 基本上,Java預設所有從Daemon執行緒產生的執行緒也是Daemon執行緒,這很直覺,由一個背景服務執行緒衍生出來的執行緒,也應該是為了在背 景服務而產生的,所以在該停止時也應該停止。 |