二 執行緒狀態

2022-08-30 10:18:09 字數 1089 閱讀 9276

▪ 新建狀態(new)

用new關鍵字建立乙個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態。

▪ 就緒狀態(runnable)

處於就緒狀態的執行緒已經具備了執行條件,但是還沒有被分配到cpu,處於「執行緒就緒佇列」,等待系統為其分配cpu。就緒狀態並不是執行狀態,當系統選定乙個等待執行的thread物件後,它就會進入執行狀態。一旦獲得cpu,執行緒就進入執行狀態並自動呼叫自己的run方法。有4中原因會導致執行緒進入就緒狀態:

1. 新建執行緒:呼叫start()方法,進入就緒狀態;

2. 阻塞執行緒:阻塞解除,進入就緒狀態;

3. 執行執行緒:呼叫yield()方法,直接進入就緒狀態;

4. 執行執行緒:jvm將cpu資源從本執行緒切換到其他執行緒。

▪ 執行狀態(running)

在執行狀態的執行緒執行自己run方法中的**,直到呼叫其他方法而終止或等待某資源而阻塞或完成任務而死亡。如果在給定的時間片內沒有執行結束,就會被系統給換下來回到就緒狀態。也可能由於某些「導致阻塞的事件」而進入阻塞狀態。

▪ 阻塞狀態(blocked)

阻塞指的是暫停乙個執行緒的執行以等待某個條件發生(如某資源就緒)。有4種原因會導致阻塞:

1. 執行sleep(int millsecond)方法,使當前執行緒休眠,進入阻塞狀態。當指定的時間到了後,執行緒進入就緒狀態。

2. 執行wait()方法,使當前執行緒進入阻塞狀態。當使用nofity()方法喚醒這個執行緒後,它進入就緒狀態。

3. 執行緒執行時,某個操作進入阻塞狀態,比如執行io流操作(read()/write()方法本身就是阻塞的方法)。只有當引起該操作阻塞的原因消失後,執行緒進入就緒狀態。

4. join()執行緒聯合: 當某個執行緒等待另乙個執行緒執行結束後,才能繼續執行時,使用join()方法。

▪ 死亡狀態(terminated)

Java多執行緒總結筆記(二) 執行緒各狀態及轉換

執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,執行程式 4....

執行緒《二 執行緒的狀態 生命六週期》

1建立,2就緒,3終止 public class threadstate 建立 new system.out.println mythread.getstate mythread.start 就緒 runnable system.out.println mythread.getstate threa...

執行緒(二) 執行緒控制 後台執行緒

設定執行緒為後台執行緒,前台執行緒結束後,後台執行緒也就結束了 這個有乙個時間差 setdaemon boolean on 檢測線程是否是後台執行緒 isdaemon public class daemonthread extends thread param args public static ...