當前位置:
首頁 > 知識 > JAVA 線程的幾種狀態

JAVA 線程的幾種狀態

線程可以有六種狀態:

1.New(新創建)

2.Runnable(可運行)(運行)

3.Blocked(被阻塞)

4.Waiting(等待)

5.Timed waiting(計時等待)

6.Terminated(被終止)

新創建線程:

 當用new操作符創建一個新線程時,如new Thread(r),該線程還沒有開始運行,它的當前狀態為new,在線程運行之前還有一些基礎工作要做。

可運行線程:

一旦線程調用start方法,線程處於runnable狀態。在這個狀態下的線程可能正在運行也可能沒有運行(也就是說Java規範中正在運行的線程仍然處於可運行狀態)。在線程運行之後或者從阻塞、等待或睡眠狀態回來後,也返回到可運行狀態。

被阻塞線程:

這個狀態下, 是在多個線程有同步操作的場景, 比如正在等待另一個線程的synchronized 塊的執行釋放, 或者可重入的 synchronized塊里別人調用wait() 方法, 也就是線程在等待進入臨界區。

等待線程:

這個狀態下是指線程擁有了某個鎖之後, 調用了它的wait方法,或者線程調用了join方法 join了另外的線程, 等待被他join的線程執行結束的狀態。這裡要區分阻塞狀態 和等待狀態的區別, 一個是在臨界點外面等待進入, 一個是在臨界點裡面wait。

計時等待線程:

當線程調用帶有超時參數的方法時會導致線程進入計時等待狀態,帶有超市參數的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的計時版。

被終止的線程:

1)線程因為run方法正常退出而自然死亡。

2)因為一個沒有捕獲的異常終止了run方法而意外死亡。

線程狀態之間的轉換:

JAVA 線程的幾種狀態

文章摘自博客園


中公優就業 幫你成就職業夢:

IT教育專業培訓:https://www.ujiuye.com/

IT職業在線教育:https://xue.ujiuye.com/

大數據時代下做java開發工程師:https://www.ujiuye.com/zt/java/?wt.bd=lsw44106tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

Spark運算元講解(上)
Spark運算元講解(下)
深入淺出數據結構C語言版——有關排序演算法的分析
盤點互聯網黑色產業

TAG:IT優就業 |