執行緒的生命週期

2022-08-26 20:33:13 字數 1071 閱讀 7318

執行緒狀態

新建(new thread)  建立乙個空物件的執行緒,在這時可以通過thread類的方法來設定執行緒各種屬性

,如執行緒的 優先順序(setprioity),執行緒名(setname),和執行緒的型別(setdaemon)等

執行緒的型別 -->守護執行緒和後台執行緒  後台執行緒隨守護執行緒結束而結束,垃圾**器就是守護執行緒.

就緒start()啟動執行緒後,系統為該執行緒分配了除cpu外的所有資源,使該執行緒處於就緒狀態,

此外,如果某個執行緒執行了yield()方法,那麼該執行緒會被暫時剝奪cpu資源,重新進入就緒狀態 

執行(活動)

通過排程選中乙個處於就緒的狀態的執行緒,使其占有cpu資源並轉為執行狀態,此時,系統正真執行run()方法

注:可以通過thread類的isalive方法來判斷執行緒是就緒/執行狀態  是的話返回true,返回false是可能執行緒處於阻塞或者停止狀態

阻塞和喚醒

正在執行的 執行緒因為某些原因不能繼續執行,就進入阻塞

原因:1.當執行了某個執行緒的sleep()等阻塞型別的 方法,該執行緒物件會被置於乙個阻塞及內  ,等待超時而自動甦醒

2.當多個執行緒檢視進入某個同步區域(synchronized)時,沒能進入該同步區域的執行緒會被置於鎖定集(lockpool)

直到獲得該同步區域的鎖進入就緒狀態

3.當執行緒執行了某個物件wait()方法時,執行緒會被置於該物件的等待集(waitpool)中,直到執行了該物件的notify()方法,

wait()/notify()方法的執行要求執行緒首先獲得該物件的鎖

死亡線程在run()方法執行結束後進入死亡狀態,此外,如果執行緒執行了interrupt()或stop()方法

那麼它會以異常退出的方式進入死亡狀態  

這五種狀態都可以通過thread裡面方法控制

終止執行緒的三種方法

使用退出標誌,使執行緒正常退出,也就是當run方法完成後執行緒終止,推薦使用

使用stop()方法強行終止執行緒(這個方法不推薦使用,因為stop和suspend,resume一樣的也可能發生不可預料的結果)

使用interrupt()方法中斷執行緒

執行緒生命週期

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