新生成的thread能start多次嗎?

不能,是由其線程狀態決定的。線程的生命週期管理依託於虛擬機與操作系統,其生命週期的各個狀態圖轉換如下:

wKioL1jEssbhHMMFAAO2P78_i50775.jpg-wh_50

從圖中可以看出,線程初始化之後,運行一次start方法後,該線程進入RUNNBALE狀態,等待分配時間片運行,如果再調用start方法,由於狀態已經不是初始化狀態了,所以導致虛擬機報錯。源碼如下:

wKiom1jEtEDAwd1YAAC2yjQ8ntU569.jpg-wh_50

說明,只有剛初始化的才能調用run,否則拋出異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章