執行緒有5個狀態
建立狀態: thread thread = new thread();
就緒狀態: thread.start();
執行狀態: cpu排程處於就緒狀態的執行緒時才是進入執行狀態
阻塞狀態: 處於執行狀態中的執行緒由於某種原因,暫時放棄對cpu的使用權,停止執行,此時進入阻塞狀態,直到其進入到就緒狀態,才 有機會再次被cpu呼叫以進入到執行狀態。根據阻塞產生的原因不同,阻塞狀態又可以分為三種:
1.等待阻塞 -- 執行狀態中的執行緒執行wait()方法,使本執行緒進入到等待阻塞狀態;
2.同步阻塞 -- 執行緒在獲取synchronized同步鎖失敗(因為鎖被其它執行緒所占用),它會進入同步阻塞狀態;
3.其他阻塞 -- 通過呼叫執行緒的sleep()或join()或發出了i/o請求時,執行緒會進入到阻塞狀態。當sleep()狀態超時、join()等待執行緒終止或者超時、或者i/o處理完畢時,執行緒重新轉入就緒狀態
死亡狀態: run方法執行完執行緒就死亡
部分內容參考文章:
二 執行緒的生命週期
新建 從新建乙個執行緒物件到程式start 這個 執行緒之間的狀態,都是新建狀態。就緒 執行緒物件呼叫start 方法後,就處於就緒狀態,等到jvm裡的執行緒排程器的排程。執行 就緒狀態下的執行緒在獲取cpu資源後就可以執行run 此時就是執行狀態。在這種狀態下可以轉變為就緒,阻塞,死亡。等待 阻塞...
java多執行緒 執行緒生命週期
本節目標 了解執行緒的宣告週期 了解執行緒的停止操作 乙個新的執行緒建立之後,通過start 方法進入執行狀態,在執行狀態時可以使用yield 進行執行緒禮讓,但是仍然可以執行,使用wait 方法暫停乙個執行緒。suspend resume stop 都會產生死鎖問題,不建議使用。如果想讓執行緒停止...
java 多執行緒 執行緒的生命週期
執行緒的生命週期主要分為下面5個狀態 當建立thread類的乙個例項 物件 繼承thread類,實現runnable介面,呼叫callable介面,此執行緒進入新建狀態 未被啟動 執行緒已被啟動,執行緒物件建立好之後進入就緒狀態,此時會等待獲取cpu的執行權 獲取到cpu執行權之後,執行緒物件開始執...