⑴ java中的守護線程 有哪些
可以用VisualVM或者jstack來查看,也可以在代碼里利用Thread.getAllStackTrace()來獲取所有的線程信息。
另
外,最簡單的方法是:寫一個最簡單的java程序,裡面就一個Thread.sleep(999999),然後在控制台下運行;如果是windows,按
Ctrl-Break,如果是linux,找到該java進程的id,然後執行"kill -3
id",就可以看到所有線程的mp了,裡面有daemon標志的就是daemon線程。
⑵ java程序運行過程中 java虛擬機是什麼時候運行的
jvm(java虛擬機)是可運行java位元組碼的虛擬計算機系統,我們可以把java虛擬機看成一個微型操作系統,在它上面可以執行java的位元組碼程序,它附著在具體操作系統之上,本身還有一套虛擬機指令,但它通常是在軟體上而不是在硬體上實現,java實現一個抽象層,將底層硬體平台,操作系統與編譯過的代碼聯系起來,java實現跨平台性,位元組碼具有通用的形式,只有通過java虛擬機處理後才可以轉換成本機形式。自己慢慢的理解一下,我也是從學過的資料上整理的一些,相信你會明白的!
⑶ java中isdaemon是什麼方法
/**
*.
*
*@return<code>true</code>ifthisthreadisadaemonthread;
*<code>false</code>otherwise.
*@see#setDaemon(boolean)
*/
publicfinalbooleanisDaemon(){
returndaemon;
}
守護線程:
判斷當前線程是否為守護線程;
⑷ java中守護進程是一直都在運行嗎
Daemon的作用是為其他線程的運行提供服務,比如說GC線程。其實User Thread線程和Daemon Thread守護線程本質上來說去沒啥區別的,唯一的區別之處就在虛擬機的離開:如果User Thread全部撤離,那麼Daemon Thread也就沒啥線程好服務的了,所以虛擬機也就退出了。
⑸ 如何設置java守護線程守護某一個線程
守護線程與普通線程在表現上沒有什麼區別,我們只需要通過Thread提供的方法來設定即可:
void setDaemon(boolean )
當參數為true時該線程為守護線程。
守護線程的特點是,當進程中只剩下守護線程時,所有守護線程強制終止。
GC就是運行在一個守護線程上的。
需要注意的是,設置線程為後台線程要在該線程啟動前設置。
Thread daemonThread = new Thread();
daemonThread.setDaemon(true);
daemonThread.start();
⑹ java主線程結束和子線程結束之間的關系
你應該換成main函數運行,abcd就一定會列印出來了
問題並不是出在主線程和子線程身上,事實上Java似乎也沒有嚴格主線程和子線程的概念,取而代之的是普通線程和後台線程
但是這里你採用@Test來運行代碼,而@Test是JUnit測試框架使用的註解,JUnit在進行單元測試的時候,如果被@Test注釋的方法執行完成,那麼內部開啟的線程也會被強制退出,退出是測試框架進行的操作
這和Java承諾的普通線程不退出程序就不結束是不相符的,如果書上告訴你會輸出兩個但是你執行了只輸出了一個那麼很可能就是這里出了問題
而通過main函數則沒有框架干預,根據Java的規則只要有普通線程沒有退出,程序就不會完全退出(System.exit強制自殺除外),那麼除非創建的線程被設置成了後台線程(或者叫守護線程,daemon),那麼才會在主線程退出時自動關閉這些後台線程,就是你遇到的偶爾可以輸出abcd偶爾不行的效果,否則一定會abcd和efgh兩個都輸出,只不過輸出順序可能不一致
⑺ Java中User Thread和Daemon Thread的區別
首先參考java jdk api
public final void setDaemon(boolean on)
將該線程標記為守護線程或用戶線程。當正在運行的線程都是守護線程時,Java 虛擬機退出。
該方法必須在啟動線程前調用。
令參考守護線程概念:
守護進程,也就是通常說的Daemon進程,是Linux中的後台服務進程。它是一個生存期較長的進程,通常獨立於控制終端並且周期性地執行某種任務或等待處理某些發生的事件。
個人理解,就是除了動態受控的主業務線程以外的用來處理一些非同步或及時或資源釋放等任務的,如jre的垃圾回收線程.
僅供參考,個人認為可以從這兩個方面去找專業資料查詢
⑻ java中幽靈線程是什麼,以及它的作用和工作原理是什麼
任何一個Java線程都能成為幽靈線程。它是作為運行於同一個進程內的對象
和線程的服務提供者。例如,HotJava瀏覽器有一個稱為" 後台圖片閱讀器"的幽靈
線程,它為需要圖片的對象和線程從文件系統或網路讀入圖片。
幽靈線程是應用中典型的獨立線程。它為同一應用中的其他對象和線程提供
服務。幽靈線程的run()方法一般都是無限循環,等待服務請求。
⑼ java裡面 daemon線程與一般線程的區別有什麼運用
你好
在Java中有兩類線程:用戶線程
(User
Thread)、守護線程
(Daemon
Thread)。
所謂守護
線程,是指在程序運行的時候在後台提供一種通用服務的線程,比如垃圾回收線程就是一個很稱職的守護者,並且這種線程並不屬於程序中不可或缺的部分。因此,當所有的非守護線程結束時,程序也就終止了,同時會殺死進程中的所有守護線程。反過來說,只要任何非守護線程還在運行,程序就不會終止。
用戶線程和守護線程兩者幾乎沒有區別,唯一的不同之處就在於虛擬機的離開:如果用戶線程已經全部退出運行了,只剩下守護線程存在了,虛擬機也就退出了。
因為沒有了被守護者,守護線程也就沒有工作可做了,也就沒有繼續運行程序的必要了。
希望幫到你
⑽ daemon在java線程中 是什麼意思
在Java中有兩類線程:用戶線程 (User Thread)、守護線程 (Daemon Thread)。
所謂守護 線程,是指在程序運行的時候在後台提供一種通用服務的線程,比如垃圾回收線程就是一個很稱職的守護者,並且這種線程並不屬於程序中不可或缺的部分。因此,當所有的非守護線程結束時,程序也就終止了,同時會殺死進程中的所有守護線程。反過來說,只要任何非守護線程還在運行,程序就不會終止。
用戶線程和守護線程兩者幾乎沒有區別,唯一的不同之處就在於虛擬機的離開:如果用戶線程已經全部退出運行了,只剩下守護線程存在了,虛擬機也就退出了。 因為沒有了被守護者,守護線程也就沒有工作可做了,也就沒有繼續運行程序的必要了。