1. 程式人生 > >sleep、yield、wait、join的區別

sleep、yield、wait、join的區別

1.sleep:Thread類的方法,必須帶一個時間引數。會讓當前執行緒休眠進入阻塞狀態並釋放CPU,提供其他執行緒執行的機會且不考慮優先順序,但如果有同步鎖則sleep不會釋放鎖即其他執行緒無法獲得同步鎖

2.yield:Thread類的方法,類似sleep但無法指定時間並且只會提供相同或更高優先順序的執行緒執行的機會,不推薦使用

3.wait:Object類的方法,必須放在迴圈體和同步程式碼塊中,執行該方法的執行緒會釋放鎖,進入執行緒等待池中等待被再次喚醒(notify隨機喚醒,notifyAll全部喚醒,執行緒結束自動喚醒)即放入鎖池中競爭同步鎖

4.join:一種特殊的wait,當前執行執行緒呼叫另一個執行緒的join方法,當前執行緒進入阻塞狀態直到另一個執行緒執行結束