Java用戶線程和守護線程


1.用戶線程和守護線程的區別
用戶線程和守護線程都是線程,區別是Java虛擬機在所有用戶線程dead后,程序就會結束。而不管是否還有守護線程還在運行,若守護線程還在運行,則會馬上結束。很好理解,守護線程是用來輔助用戶線程的,如公司的保安和員工,各司其職,當員工都離開后,保安自然下班了。

2.用戶線程和守護線程的適用場景
由兩者的區別及dead時間點可知,守護線程不適合用於輸入輸出或計算等操作,因為用戶線程執行完畢,程序就dead了,適用於輔助用戶線程的場景,如JVM的垃圾回收,內存管理都是守護線程,還有就是在做數據庫應用的時候,使用的數據庫連接池,連接池本身也包含着很多后台線程,監聽連接個數、超時時間、狀態等。

3.創建守護線程
調用線程對象的方法setDaemon(true),設置線程為守護線程。
1)thread.setDaemon(true)必須在thread.start()之前設置。
2)在Daemon線程中產生的新線程也是Daemon的。
3)不是所有的應用都可以分配給Daemon線程來進行服務,比如讀寫操作或者計算邏輯。因為Daemon Thread還沒來得及進行操作,虛擬機可能已經退出了。

4.Java守護線程和Linux守護進程
兩者不是一個概念。Linux守護進程是后台服務進程,沒有控制台。
在Windows中,你可以運行javaw來達到釋放控制台的目的,在Unix下你加&在命令的最后就行了。所以守護進程並非一定需要的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM