您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java中守護線程和本地線程有什么區(qū)別,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
Java中的線程分為兩種:守護線程(Daemon)和用戶線程(User)。
任何線程都可以設置為守護線程和用戶線程,通過方法Thread.setDaemon(bool on);true則把該線程設置為守護線程,反之則為用戶線程。Thread.setDaemon()必須在Thread.start()之前調(diào)用,否則運行時會拋出異常。
兩者的區(qū)別:
唯一的區(qū)別是判斷虛擬機(JVM)何時離開,Daemon是為其他線程提供服務,如果全部的User Thread已經(jīng)撤離,Daemon 沒有可服務的線程,JVM撤離。也可以理解為守護線程是JVM自動創(chuàng)建的線程(但不一定),用戶線程是程序創(chuàng)建的線程;比如JVM的垃圾回收線程是一個守護線程,當所有線程已經(jīng)撤離,不再產(chǎn)生垃圾,守護線程自然就沒事可干了,當垃圾回收線程是Java虛擬機上僅剩的線程時,Java虛擬機會自動離開。
擴展:Thread Dump打印出來的線程信息,含有daemon字樣的線程即為守護進程,可能會有:服務守護進程、編譯守護進程、windows下的監(jiān)聽Ctrl+break的守護進程、Finalizer守護進程、引用處理守護進程、GC守護進程。
看完上述內(nèi)容,你們對Java中守護線程和本地線程有什么區(qū)別有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。