上述的圖有些簡略,下面詳細說明下,執行緒共有6種狀態:
new,runnable,blocked,waiting,timed waiting,terminated
1,當進入synchronized同步**塊或同步方法時,且沒有獲取到鎖,執行緒就進入了blocked狀態,直到鎖被釋放,重新進入runnable狀態
2,當執行緒呼叫wait()或者join時,執行緒都會進入到waiting狀態,當呼叫notify或notifyall時,或者join的執行緒執行結束後,會進入runnable狀態
3,當執行緒呼叫sleep(time),或者wait(time)時,進入timed waiting狀態,
當休眠時間結束後,或者呼叫notify或notifyall時會重新runnable狀態。
4,程式執行結束,執行緒進入terminated狀態
/**
* @author huangguizhao
* 測試執行緒的狀態
*/public
class
threadstatetest
}class
task
implements
runnable
}}
public
class
threadstatetest
}class
blocktask
implements
runnable
catch
(interruptedexception e)}}
}
注意:
blocked,waiting,timed waiting 我們都稱為阻塞狀態
上述的就緒狀態和執行狀態,都表現為runnable狀態
執行緒生命週期
今天看到一段這樣的 handle hthread createthread null,0,add,a,0,null hmutext createmutex null,false,l huchiti closehandle hthread 簡單的說,關閉了執行緒控制代碼 關閉了執行緒,其兩者的生命週期...
執行緒生命週期
本章目標 了解執行緒的生命週期 了解執行緒的停止操作 執行緒的生命週期 注意大部分的執行緒生命週期的方法基本上都已經學過了,那麼在這裡有以下三個新方法 suspend 方法 暫時掛起執行緒 resume 方法 恢復掛起的執行緒 stop 方法 停止執行緒 但是對於執行緒中suspend resume...
執行緒生命週期
執行緒的生命週期分為五種狀態 新建狀態 就緒狀態 執行狀態 阻塞狀態 死亡狀態 剛new出來的執行緒物件。新建狀態呼叫start 方法就進入就緒狀態。就緒狀態的執行緒又叫做可執行狀態,表示當前執行緒具有搶奪cpu時間片的權利 cpu時間片就是執行權 當乙個執行緒搶奪到cpu時間片之後就開始執行run...