下面小編就為大家帶來一篇基於java 執行緒的幾種狀態(詳解)。小編覺得蠻不錯的,現在就想給大家,也給大家做個參考。一起跟著小編過來看看吧
執行緒可以有六種狀態:
1.New(新建立)
# 2.Runnable(可運行)(運行)
3.Blocked(被阻塞)
# 4.Waiting(等待)
5.Timed waiting(計時等待)
6.Terminated(已終止)
## 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線程中幾個狀態分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!