本教學操作環境:windows7系統、java10版,DELL G3電腦。
1、新建(New) :建立後尚未啟動的執行緒處於這種狀態。
2、運行(Runnable) :包含作業系統執行緒狀態中的Running和Ready,也就是處於此狀態的執行緒有可能正在執行,也有可能正在等待著作業系統為它分配執行時間。
3、期等待(Waiting) :處於這種狀態的執行緒不會被指派處理器執行時間,它們要等待被其他執行緒明確喚醒。以下方法會讓執行緒陷入期的等待狀態:
沒有設定Timeout參數的Object::wait()方法;
沒有設定Timeout參數的Thread::join()方法;
LockSupport::park()方法。
4.限期等待(Timed Waiting) :處於這種狀態的執行緒也不會被指派處理器執行時間,不過無須等待被其他執行緒明確喚醒,在一定時間之後它們會由系統自動喚醒。以下方法會讓執行緒進入限期等待狀態:
設定了Timeout參數的Object::wait()方法;
設定了Timeout參數的Thread::join()方法;
LockSupport::parkNanos()方法;
LockSupport::parkUntil()方法。
5.阻塞(Blocked) :線程被阻塞了,“阻塞狀態”與“等待狀態”的區別是“阻塞狀態”在等待著獲取到一個排它鎖,這個事件將在另外一個線程放棄這個鎖的時候發生;而「等待狀態」則是在等待一段時間,或喚醒動作的發生。在程式等待進入同步區域的時候,執行緒將進入這種狀態。
6、結束(Terminated) :已終止執行緒的執行緒狀態,執行緒已經結束執行。
以上就是Java執行緒的六種狀態,希望能對大家有幫助。
更多Java學習指路: java教程