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

7x24小時咨詢熱線

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)前線程,剛剛新建出來,尚未啟動。

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

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

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

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

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

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

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

Java線程的實(shí)現(xiàn)并不受JVM規(guī)范約束,故不同虛擬機(jī)的實(shí)現(xiàn),往往不同。目前主流的HotSpot是將每個Java線程直接映射到一個操作系統(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)行時,程序內(nèi)部可以通過Thread.getState()獲取目標(biāo)線程狀態(tài)

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

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

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

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

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

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

收藏
分享到:

相關(guān)課程

相關(guān)資訊

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

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

認(rèn)證等級

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

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

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

信譽(yù)值

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

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

  • 100%
  • 37
  • 1903
在線咨詢
;