線程可以通過notify
,join
,LockSupport.park
方式進入wating
狀態,進入wating狀態的線程等待喚醒(notify或notifyAll)才有機會獲取cpu的時間片段來繼續執行。
線程的 blocked
狀態往往是無法進入同步方法/代碼塊來完成的。這是因為無法獲取到與同步方法/代碼塊相關聯的鎖。
與wating狀態相關聯的是等待隊列,與blocked狀態相關的是同步隊列,一個線程由等待隊列遷移到同步隊列時,線程狀態將會由wating
轉化為blocked
。可以這樣說,blocked
狀態是處於wating
狀態的線程重新煥發生命力的必由之路。