2.在Thread.State中的定義如下NEW:初始狀態,線程被創建,但是還沒有調用start()方法。
創新互聯建站是一家集網站建設,莊河企業網站建設,莊河品牌網站建設,網站定制,莊河網站建設報價,網絡營銷,網絡優化,莊河網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
RUNNABLE:運行狀態,Java線程將操作系統中的就緒和運行兩種狀態籠統地稱作“運行中”。
BLOCKED:阻塞狀態,表示線程阻塞于鎖。
WAITING:等待狀態,表示線程進入等待狀態,進入該狀態表示當前線程需要等待其他線程做出一些特定動作(通知或中斷)
TIMED_WAITING:超時等待狀態,該狀態不同于 WAITING,它是可以在指定的時間自行返回的。
TERMINATED:終止狀態,表示當前線程已經執行完畢。
public enum State {NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
3.六種狀態對應的含義
一、新建狀態(NEW)當我們使用關鍵字new創建了一個線程對象時,這個線程就處于新建狀態。
二、運行狀態(RUNNABLE)操作系統中的就緒和運行兩種狀態,在Java中統稱為RUNNABLE。
就緒狀態(READY):
當線程對象調用了start()方法之后,線程處于就緒狀態,就緒意味著該線程可以執行,但具體啥時候執行將取決于JVM里線程調度器的調度。PS:1.不允許對一個線程多次使用start。2.線程執行完成之后,不能試圖用start將其喚醒。
運行狀態(RUNNING):
處于就緒狀態的線程獲得了CPU之后,真正開始執行run()方法的線程執行體時,意味著該線程就已經處于運行狀態。需要注意的是,對于單處理器,一個時刻只能有一個線程處于運行狀態。
對于搶占式策略的系統來說,系統會給每個線程一小段時間處理各自的任務。時間用完之后,系統負責奪回線程占用的資源。下一段時間里,系統會根據一定規則,再次進行調度。
阻塞狀態表示線程正等待監視器鎖,而陷入的狀態。例如:線程等待進入synchronized同步方法 / 線程等待進入synchronized同步代碼塊都會使線程阻塞,一但線程拿到了鎖,他就會進入就緒狀態。
四、等待狀態(WAITING)進入該狀態表示當前線程需要等待其他線程做出一些的特定的動作(通知或中斷)。需要其他線程使用notify()和notifyAll()方法喚醒。
五、超時等待狀態(TIMED_WAITING)區別于WAITING,它可以在指定的時間自行返回。即它不需要其他線程喚醒,在指定時間結束之后,它會自動變為就緒狀態。
六、終止狀態(TERMINATED)即線程的終止,表示線程已經執行完畢。前面已經說了,已經消亡的線程不能通過start再次喚醒。例如:run()和call()線程執行體中順利執行完畢,線程正常終止 / 線程拋出一個沒有捕獲的Exception或Error。
需要注意的是:主線成和子線程互不影響,子線程并不會因為主線程結束就結束。
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧