東莞易思訓(xùn)教育

7x24小時(shí)咨詢(xún)熱線

400-660-3310

當(dāng)前位置 : 好學(xué)校 東莞易思訓(xùn)教育 學(xué)習(xí)資訊 資訊詳情

Java線程狀態(tài)及切換

2021-10-28

一、什么是Java線程狀態(tài)

在Java程序中,用于描述Java線程的六種狀態(tài):

新建(NEW):當(dāng)前線程,剛剛新建出來(lái),尚未啟動(dòng)。

運(yùn)行(RUNNABLE):當(dāng)前線程,處于競(jìng)爭(zhēng)CPU時(shí)間分片或已經(jīng)獲得CPU時(shí)間片的狀態(tài)。

等待(WAITTING):當(dāng)前線程,處于休眠,不參與CPU時(shí)間片競(jìng)爭(zhēng)的狀態(tài)。

定時(shí)等待(TIMED_WAITTING):當(dāng)前線程,處于定時(shí)休眠,暫時(shí)不參與CPU時(shí)間片競(jìng)爭(zhēng)的狀態(tài)。

阻塞(BLOCKED):當(dāng)前線程,處于阻塞,不參與CPU時(shí)間片競(jìng)爭(zhēng)的狀態(tài)。

終止(TERMINATED):當(dāng)前線程,處于最終停止的狀態(tài)。

新建狀態(tài),只能進(jìn)入運(yùn)行狀態(tài)。而終止?fàn)顟B(tài)無(wú)法再轉(zhuǎn)為其他狀態(tài)。

等待/定時(shí)等待與阻塞,差別就是后者需要一個(gè)事件信號(hào)(如其他線程放棄當(dāng)前線程需要的排他鎖),才可以進(jìn)行狀態(tài)切換。當(dāng)然,強(qiáng)行關(guān)閉也是可以的。

Java線程的實(shí)現(xiàn)并不受JVM規(guī)范約束,故不同虛擬機(jī)的實(shí)現(xiàn),往往不同。目前主流的HotSpot是將每個(gè)Java線程直接映射到一個(gè)操作系統(tǒng)的原生線程,從而由操作系統(tǒng)完成一系列的線程調(diào)度

Java線程狀態(tài)及切換

二、哪里看Java線程狀態(tài)

查看Java線程狀態(tài),主要存在三種方式:

java.lang.Thread.State下可以直接看到Java的六種線程狀態(tài)

Java運(yùn)行時(shí),程序內(nèi)部可以通過(guò)Thread.getState()獲取目標(biāo)線程狀態(tài)

Java運(yùn)行時(shí),程序外部可以通過(guò)jstack等工具,查看線程狀態(tài)

有關(guān)jstack等工具等使用,后續(xù)會(huì)有博客,專(zhuān)門(mén)闡述。

三、什么時(shí)候變換Java線程狀態(tài)

Java線程狀態(tài)的切換嘛。不啰嗦,直接上圖。

什么時(shí)候變換Java線程狀態(tài)

這張圖涵蓋了Java線程狀態(tài)切換的各類(lèi)方法。相較網(wǎng)上一些圖片,更為詳盡一些。

收藏
分享到:

相關(guān)課程

相關(guān)資訊

東莞易思訓(xùn)教育

東莞易思訓(xùn)教育

認(rèn)證等級(jí)

信譽(yù)良好,可安心報(bào)讀

東莞易思訓(xùn)教育

已獲好學(xué)校V2信譽(yù)等級(jí)認(rèn)證

信譽(yù)值

  • (60-80)基礎(chǔ)信譽(yù)積累,可放心報(bào)讀
  • (81-90)良好信譽(yù)積累,可持續(xù)信賴(lài)
  • (91-100)充分信譽(yù)積累,推薦報(bào)讀

與好學(xué)校簽訂讀書(shū)保障協(xié)議:

  • 100%
  • 37
  • 1896
在線咨詢(xún)
;