Java多線程中線程的幾種狀態

Java線程在運行的生命週期中可能處於6種狀態,每個確定時刻,線程只可能處於一種狀態,6種狀態如下:

1)NEW:初始狀態,線程被構建,但是還沒有執行start()方法。

2)RUNNABLE:運行狀態,Java線程將操作系統中的就緒和運行兩種狀態統稱爲“運行中”。

3)BLOCKED:阻塞狀態,表示線程阻塞於鎖。

4)WAITING:等待狀態,需要其他線程喚醒或者做出一些特性動作(通知或中斷)。

5)TIMED_WAITING:超時等待狀態,可以在指定時間內返回。

6)TERMINATED:終止狀態,表示當前線程已經執行完畢。


各狀態直接的切換方法如下:

1)NEW -> RUNNABLE :Thread.start();

2)RUNBABLE中 RUNNING -> READY:yield();

3)RUNNABLE -> WAITING:Object.wait();Object.join();LockSupport.park(Thread);

4)WAITING -> RUNNABLE:Object.notify();Object.notifyAll();LockSupport.unpark(Thread);

5)RUNNABLE -> TIMED_WAITING:Thread.sleep(long);Object.wait(long);Thread.join(long);LockSupport.parkNanos();LockSupport.parkUntil();

6)TIMED_WAITING -> RUNNABLE:Object.notify();Object.notifyAll();LockSupport.unpark(Thread);

7)RUNNABLE -> BLOCKED:進入Synchronized方法/塊

8)BLOCKED -> RUNNABLE:獲取到鎖




發佈了222 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章