守護線程和非守護線程(保姆與嬰兒的故事)

面試JVM的一個問題之一

Java是多線程,但是線程的類型分兩種:User Thread(非守護線程/用戶線程)、Daemon Thread(守護線程)。

用戶線程:就是通過main()方法調用開始,主動調用的工作線程,也可以通過創建線程後的thread.setDaemon(true) 將當前線程轉爲守護線程。
守護線程:通常是由JVM調用的,例如垃圾回收等線程。

它們之間的關係是:

守護線程的作用是爲用戶線程的運行提供服務,並且週期性的執行某種任務或者等待處理事件。當所有用戶線程/非守護線程結束時,程序終止,進程中所有的守護線程也會退出。
舉例: 守護線程是保姆,用戶線程就是一個學走路的嬰兒,用戶線程由main方法爲入口開始執行業務邏輯代碼。守護線程也開始跟着他爲他保駕護航,進行垃圾回收清理紙尿片等等。當嬰兒玩累了,要睡覺了,那保姆也可以休息了。

以上就是我自己的理解和總結,鞠躬!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章