sleep 和 wait 的區別

2021-10-07 05:21:37 字數 407 閱讀 7281

1、類不同

sleep() 來自thread 類;wait() 來自 object 類。

2、釋放鎖

sleep() 不釋放鎖;wait() 釋放鎖。

3、用法不同

sleep() 到時間會自動恢復,wait() 可以使用notify() / notifyall() 直接喚醒。

notify() 和 notifyall() 的區別?

notify() 喚醒乙個執行緒,notifyall() 會喚醒所有的執行緒。

notifyall()呼叫後,會將全部執行緒有等待池轉移到鎖池,然後參與鎖的競爭,競爭到鎖的執行緒則繼續執行,不成功則繼續在鎖池等待鎖被釋放。

notify() 只會喚醒乙個執行緒,具體喚醒哪乙個執行緒由虛擬機器控制。

notifyall()一般不建議使用。

sleep和wait的區別

關鍵字 sleep wait 1 這兩個方法來自不同的類分別是thread和object 2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在...

sleep 和 wait的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...

sleep和wait的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...