執行緒的生命週期

2021-06-21 12:10:52 字數 913 閱讀 5690

1.新建 threadd thread = new thread(runnable);

2.就緒 thread.start();將執行緒放入就緒等待佇列中,等待cpu時間片的分配

3.執行 獲取到cpu時間片,一直執行到結束,除非有優先順序更高執行緒進入或者自動放棄cpu資源

4.死亡 :正常結束或被其他執行緒殺死(自己呼叫stop()方法)

5.堵塞:由於某種原因,使正在執行的執行緒讓出cpu資源,暫停自己執行,進入堵塞狀態

正在睡眠:執行緒自己呼叫sleep(3000)方法,釋放cpu資源,鎖不釋放,睡眠時間過後,進入就緒狀態

正在等待:執行緒自己呼叫wait()方法,釋放cpu資源,釋放鎖,等待其他執行緒呼叫notify(),回到就緒狀態

被其他執行緒阻塞(等待其他執行緒返回結果):當前執行緒呼叫suspend()方法,(其他執行緒有結果後呼叫resume()方法恢復當前執行緒)

6.yield()方法,可以讓當前執行緒進行就緒狀態,讓同優先順序的其他執行緒由獲得cpu資源,但不能保證100%獲得

7.join(millions)方法,將指定執行緒加入當前執行緒中,直到指定執行緒執行完,當前執行緒才會繼續執行

8.thread.interrupt();一般可以將阻塞狀態執行緒通過丟擲interruptedexcetion異常,進入結束阻塞狀態(例如while迴圈中進入了阻塞狀態,通過flag就沒法判斷什麼時候結束while迴圈)

9.  suspend() 和 resume() 方法:兩個方法配套使用,suspend()使得執行緒進入阻塞狀態,並且不會自動恢復,必須其對應的resume() 被呼叫,才能使得執行緒重新進入可執行狀態。典型地,suspend() 和 resume() 被用在等待另乙個執行緒產生的結果的情形:請求結果沒有返回之前,讓執行緒a阻塞,另乙個執行緒產生了結果後,呼叫 resume() 使其恢復。但suspend()方法很容易引起死鎖問題,已經不推薦使用了

執行緒生命週期

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