多執行緒中sleep 和wait 方法的的區別

2021-09-25 04:09:51 字數 421 閱讀 9098

相同點:一旦執行方法,當前執行緒都會進入阻塞狀態

不同點:

1.兩個方法的宣告位置不同,sleep()是thread類中的方法,wai()是object類中的方法

2.呼叫要求不同:sleep()可以在任何場景下呼叫,wai()只能在同步**塊或者同步方法中呼叫、

3.是否釋放同步監視器:如果兩個方法都是用在同步方法或者同步**塊中,sleep()不釋放同步監視器,wai()釋放同步監視器

4.是否需要手動喚醒:sleep()方法不需要手動喚醒,當阻塞的時間到了之後自動喚醒,並且接著向下執行。

wai()方法需要下乙個執行緒拿到同步監視器中在同步方法或同步**塊中呼叫notify()或者notifyall()方法喚醒,並且喚醒之後處於就緒狀態,因為此時鎖在喚醒當前執行緒的首重,只有當拿個執行緒執行完成或者進入臨時阻塞狀態後釋放鎖之後才能呼叫。

總結 Java多執行緒中wait和sleep的區別

一 對wait和sleep的個人理解 wait表示等待的意思,當執行緒呼叫wait方法時,執行緒將會處於等待狀態,如果想要再次執行呼叫過wait方法的執行緒需要將其喚醒,使其脫離等待狀態 sleep表示休眠的意思,這種休眠是有時間限制的,休眠時間到了執行sleep方法的執行緒會繼續執行下去 二 區別...

多執行緒學習 wait和sleep區別

1.wait可以指定時間也可以不指定,sleep必須指定時間。2.在同步是,對cpu的執行權和鎖的處理不同 知識點 執行權,有執行權,那麼意味了一直占用cpu在執行,其它執行緒分配不到cpu wait 釋放執行權,釋放鎖 很好理解,不指定時間,那麼他必須要等別人喚醒,如果不釋放鎖和執行權,那麼其他執...

多執行緒wait 和sleep 的區別

wait 位於同步中,可以釋放鎖的資源 sleep 不是釋放鎖的資源 wait需要notify才能從休眠狀態變為執行狀態,sleep到期之後,會自動從休眠狀態變為執行狀態。官方話語如下 對於sleep 方法,我們首先要知道該方法是屬於thread類中的。而wait 方法,則是屬於object類中的。...