線程的sleep方法和wait方法,你會使用了嗎

1、sleep方法是Thread類的靜態方法;wait方法是Object的成員方法。它們都可以暫停執行線程,但是sleep方法沒有釋放鎖,而wait方法釋放了鎖。

2、sleep(xxx)

調用sleep(xxx)會讓當前線程暫停(又稱此為“睡眠或休眠”)執行指定的時間xxx毫秒,xxx越大等待時間越長,比如:sleep(1000)將暫停1000毫秒執行,此時將執行機會讓給其他線程,即把使用CPU的機會給其他線程,但該對象的鎖依然保持,所以休眠時間結束後會自動恢復,即該線程回到就緒狀態。

3、wait()

調用wait()方法,會使當前線程放棄對象的鎖,即線程暫停執行,進入對象的等待池。

此時,只有調用該對象的notify()方法或notifyAll()方法,才能喚醒等待池中的線程進入等鎖池,但線程只有再次獲得對象的鎖,才能進入就緒狀態。

線程的sleep方法和wait方法,你會使用了嗎



分享到:


相關文章: