1.新建狀態(new):執行緒物件建立後將納入新建狀態. thread t = new thread();
2.就緒狀態(runnable):呼叫start()進入就緒狀態
3.執行狀態(running):cpu開始排程處於執行狀態的執行緒,此執行緒才真正執行
4.阻塞狀態(blocked):處於執行時的執行緒由於某種原因暫時放棄了對cpu的使用權
(1)等待阻塞:執行wait()方法,當呼叫wait()時,會把當前鎖釋放,然後讓出cpu,進入等待阻塞狀態,當呼叫notify/notifyall方法時,會喚醒乙個處於等待該物件鎖的執行緒
(2)同步阻塞:執行緒在獲取synchronized同步鎖失敗(被其它執行緒占用)進入同步阻塞狀態
(3)其它阻塞:thread類的靜態方法sleep會阻塞當前執行緒,在a中呼叫了b的join方法,表示b執行完才會繼續執行a,或發出i/o請求時也會阻塞執行緒
5.消亡狀態(dead):執行緒執行完或因異常推出run方法
1.繼承thread類,重寫run方法
public class demo1 extends thread
public static void main(string args)
}
2.實現runnable介面,實現run方法
public class demo2 implements runnable
public static void main(string args)
}
demo2不代表乙個執行緒,而是乙個執行緒任務,需要將這個runnable介面的實現類傳遞給thread類,thread類的run方法執行時首先會檢查target是否為空,如果為空就呼叫thread類的run方法,上面的1中重寫了run方法,所以呼叫的重寫的run方法,這裡的2中在new thread時傳入了乙個target,所以target不為空,呼叫的是target的run方法
@override
public void run()
}
3.使用匿名內部類
public class threaddemo
}.start();
new thread(new runnable()
}).start();
}}
如果寫一塊(執行結果是sub...)
public static void main(string args)
})}.start();
}
4.帶返回值的執行緒(實現callable介面,實現call方法)
public class callablethread implements callable
public static void main(string args) throws executionexception, interruptedexception
}
實現callable介面,相較於實現runnable介面的方式,方法可以有返回值,並且可以丟擲異常
fulturetask介面繼承了runnable介面和future介面
fulture介面提供了非同步計算結果
5.定時器
public class timerthread
},0,1000);
}}
6.執行緒池的實現
public class threadpoll
});}
}}
Java併發程式設計 執行緒的基本狀態
執行緒基本上有5種狀態,分別是 new runnable running blocked dead。當執行緒物件對建立後,即進入了新建狀態,如 thread t new mythread 當呼叫執行緒物件的start 方法 t.start 執行緒即進入就緒狀態。處於就緒狀態的執行緒,只是說明此執行緒...
Java併發程式設計 執行緒的狀態和執行緒的建立
執行緒的狀態 新建狀態 new 新建立了乙個執行緒物件。就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於 可執行執行緒池 中,變得可執行,只等待獲取cpu的使用權。即在就緒狀態的程序除cpu之外,其它的執行所需資源都已全部獲得。執行狀態 ru...
執行緒的基本狀態 執行緒例題
x 比如在該執行緒之前有乙個執行緒呼叫了join,搶占了cpu執行權,剛好搶占的執行緒呼叫了interupt,導致其執行緒中斷,將cpu讓出,原來執行緒可以從阻塞到就緒態,繼續搶cpu y 有資格進行搶鎖活動 主要是平時很少用到synchronized方法,多實踐一下 1 子執行緒迴圈10次,接著主...