一、線程分類
User Thread:用戶線程,一般的線程默認爲用戶線程。
Daemon Thread:守護線程,也稱“服務線程”,在沒有用戶線程可服務時會自動結束。守護線程的優先級比較低,用於爲系統中的其它對象和線程提供服務。通過Thread.setDaemon(true)設置爲守護線程。
二、守護線程的作用
任何一個守護線程都是整個JVM中所有非守護線程的守護者。只要當前JVM實例中尚存在任何一個非守護線程沒有結束,守護線程就全部工作;只有當最後一個非守護線程結束時,守護線程隨着JVM一同結束工作。虛擬機也就退出了。
三、應用
垃圾回收線程就是一個經典的守護線程,當我們的程序中不再有任何運行的線程,程序就不會再產生垃圾,垃圾回收器也就無事可做,所以當垃圾回收線程是JVM上僅剩的線程時,垃圾回收線程會自動離開。它始終在低級別的狀態中運行,用於實時監控和管理系統中的可回收資源。
四、備註
守護線程中創建的線程默認爲守護線程
如果將守護線程中創建的線程顯示設置爲非守護線程(用戶線程),那這個線程是守護線程還是用戶線程
答案:顯示的設置是生效的,該線程爲用戶線程
本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。