JAVA並發編程——守護線程(Daemon Thread)

來源:互聯網
上載者:User

標籤:

在Java中有兩類線程:使用者線程 (User Thread)、守護線程 (Daemon Thread)。

所謂守護 線程,是指在程式啟動並執行時候在後台提供一種泛型服務的線程,比如記憶體回收線程就是一個很稱職的守護者,並且這種線程並不屬於程式中不可或缺的部分。因 此,當所有的非守護線程結束時,程式也就終止了,同時會殺死進程中的所有守護線程。反過來說,只要任何非守護線程還在運行,程式就不會終止。

使用者線程和守護線程兩者幾乎沒有區別,唯一的不同之處就在於虛擬機器的離開:如果使用者線程已經全部退出運行了,只剩下守護線程存在了,虛擬機器也就退出了。 因為沒有了被守護者,守護線程也就沒有工作可做了,也就沒有繼續運行程式的必要了。

將線程轉換為守護線程可以通過調用Thread對象的setDaemon(true)方法來實現。在使用守護線程時需要注意一下幾點:

(1) thread.setDaemon(true)必須在thread.start()之前設定,否則會跑出一個

    IllegalThreadStateException異常。你不能把正在啟動並執行常規線程設定為守護線程。 

(2) 在Daemon線程中產生的新線程也是Daemon的。

(3) 守護線程應該永遠不去訪問固有資源,如檔案、資料庫,因為它會在任何時候甚至在一個操作的中間發生中斷。


JAVA並發編程——守護線程(Daemon Thread)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.