Java線程的狀態以及不同狀態下線程中斷機制的效果

閱讀這篇文章,你將會了解
1.Java線程有什麼狀態,以及狀態扭轉的方式
2.Java線程的中斷對於各個狀態的Java線程有什麼效果。

一.Java線程的狀態:

  1. 線程的中斷不屬於線程的狀態,中斷是一種操作,當用戶不希望某個線程繼續執行時,可以通過中斷機制去完成這個事情。但是,Java線程的中斷對於各個狀態的Java線程有不一樣的效果。
  2. Java線程有6個狀態,可以進入源碼Thread.java查看。
狀態 擁有cpu執行時間 描述
NEW 創建新線程,還未啓動時
RUNNABLE RUNNING:有
READY:無
運行狀態,實質上包括了傳統線程中的2個狀態
(1)RUNNING:運行中
(2)READY:就緒,等待資源(例如cpu時間片)
BLOCKED 阻塞,線程在等待monitor lock(監視器鎖)
WAITING 等待,直到被喚醒
TIMED_WAITING 超時等待,達到一定時間後會自動喚醒
TERMINATED 終止,線程已經執行完畢

二.Java線程的狀態扭轉


圖片來源:https://blog.csdn.net/pange1991/article/details/53860651/

三.Java線程的中斷

1. 線程中斷的方法

方法名 描述
public boolean isInterrupted() 返回是否中斷,不做其他事情
public void interrupt() 設置中斷標誌位
public static boolean interrupted() 返回中斷標誌位,並清除中斷標誌位

2. Java線程不同狀態下中斷機制的效果

狀態 中斷效果 描述
NEW
RUNNABLE 設置中斷標誌位 用戶自己判斷是否中斷,以及如何處理
BLOCKED 設置中斷標誌位 用戶自己判斷是否中斷,以及如何處理
WAITING 拋InterruptedException異常,並清空中斷標誌位
TIMED_WAITING 拋InterruptedException異常,並清空中斷標誌位
TERMINATED
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章