(1)新建狀態(create):建立乙個執行緒類的物件後,產生的新執行緒就進入新建狀態。
如:thread myth=new mythread();
(2) 可執行狀態(runable):也叫就緒狀態,呼叫start()方法後進入。
(3) 執行狀態(running):當處於就緒狀態的執行緒被呼叫並獲得了cpu等執行必須的資源時,就進入了執行狀態。
myth.run();
(4) 掛起狀態(blocked):也叫堵塞狀態,當下面的四種情況·之一出現時就會進入:
呼叫了sleep()方法
呼叫了wait()方法。
如果執行緒中使用synchronized來請求物件的鎖未獲得時。
如果執行緒中有輸入輸出操作。
如果乙個執行緒進入了掛起狀態,就無法進入就緒佇列。這時,通常需要由某些事件才能喚醒,具體由什麼喚醒取決於掛起的原因。
(5) 停止狀態(dead):執行緒已經退出執行狀態,並且不再進入就緒狀態。產生這種現象的原因可能是執行緒已經執行完畢,或者被另乙個程序強行殺死。
執行緒的基本控制
(1)終止執行緒
執行緒run()方法執行完畢後,會自然終止。
也可通過呼叫stop()方法來終止執行緒。
(2)測試執行緒狀態
可以通過isalive()方法來來獲取執行緒是否處於活動狀態。start()後,終止前,都屬於活動狀態。
(3)執行緒的暫停與恢復
sleep()方法:將執行緒停止若干毫秒。
join()方法:當前執行緒等待呼叫該方法的執行緒結束後,再恢復執行。
執行緒的排程和優先順序
設定執行緒優先順序的格式為:
執行緒名.setpriority(i);
其中,i的取值為1~10,10為最大優先順序。
thread類有三個優先順序靜態常量:
max_priority:最大優先順序,10。
min_priority:最小優先順序,1。
norm_priority:普通優先順序,5。
執行緒的生命週期狀態
第一步 新建狀態 使用new關鍵字新建執行緒,此時處於新建狀態 第二步 就緒狀態 當呼叫了該執行緒的start 方法,執行緒啟動,處於就緒狀態,但是不一定執行 第三步 執行狀態 需要考作業系統cup的排程執行,如果作業系統是搶占式排程,當執行緒搶占到了cup的執行許可權,執行緒開始執行 如果是分時排...
執行緒生命週期及狀態
示例2 多執行緒執行狀態切換示例 public class demo2 system.out.println 沒呼叫start方法,thread1當前狀態 thread1.getstate tostring thread1.start thread.sleep 2000l 等待thread1執行結束...
執行緒Thread的生命週期以及狀態
由於早上沒有網,所以幾篇寫好的部落格就一起發啦。執行緒的生命週期以及狀態的圖大體上如下 其實 從這個圖中已經大體上能夠的獲取到執行緒的生命週期以及狀態了,但是還是詳細的說下吧 首先是通過new thread 方法例項化乙個新執行緒,然後改執行緒的物件呼叫start 方法,此時執行緒轉入到就緒狀態並且...