執行緒的生命週期?

2021-09-25 22:15:20 字數 1021 閱讀 7618

執行緒的生命週期分為五個部分:新建狀態、就緒狀態、執行狀態、阻塞狀態、死亡狀態。

新建狀態(new):指新建了乙個執行緒物件。比如 thread t= new thread( ); 這就是新建了乙個thread類的執行緒物件。

就緒狀態(ready):當執行緒物件建立後,該執行緒物件自身或其他物件呼叫了該物件的start() 方法。該執行緒就位於可執行池中,變得可執行,等待獲取cpu的使用權。因為同一時間裡cpu只執行某乙個執行緒。

執行狀態(running):當就緒狀態的執行緒獲取了cpu的時間片或者說獲取了cpu的執行時間,這就呼叫該執行緒的run()方法,然後進入到執行狀態。只有處於就緒狀態的執行緒才能進入執行狀態。

阻塞狀態(blocked):乙個正在執行的執行緒在一些情況下,如執行耗時的輸入輸出操作時,會放棄cpu的使用權,進入阻塞狀態。執行緒進入阻塞狀態後,不能再排隊佇列,必須消除阻塞,才可以進入就緒狀態。不能直接進入執行狀態,即結束阻塞的執行緒需要重新進入執行池,等待系統的排程。

進入阻塞狀態的幾種情況

————當執行緒試圖獲取某個物件的同步鎖時,如果該鎖被其他執行緒所使用,則該執行緒會進入阻塞狀態。想消除此狀態,必須獲得到其他執行緒所持有的鎖。

————當執行緒呼叫乙個阻塞試的io方法時。想進入就緒狀態,必須等到這個阻塞的io的方法返回。

————當執行緒呼叫了某個物件的wait()方法時。notify()方法喚醒。

————呼叫了thread.sleep(long millis)方法時。休眠狀態自動進入阻塞狀態。

————乙個執行緒呼叫另乙個執行緒join()方法時。等待加入的執行緒執行結束後會結束阻塞狀態。

死亡狀態(dead):當執行緒執行完或者異常退出了run()的執行,則該執行緒的生命週期就結束了

參考:(

執行緒生命週期

今天看到一段這樣的 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...