sleep 和wait 的區別

2021-10-14 01:52:05 字數 385 閱讀 3876

sleep()就是當前執行緒進入阻塞狀態,cpu不會繼續執行當前執行緒,直到指定的時間超過才會重新執行當前執行緒,這個過程中不會釋放物件鎖,如果當前執行緒持有物件鎖,那麼其他需要此物件鎖才能執行的執行緒就無法繼續。

wait()是指在乙個已經進入了同步**塊的執行緒讓cpu停止執行當前執行緒轉去執行其他執行緒,並且將當前執行緒所持有的物件鎖釋放,讓其他需要此物件鎖的執行緒能夠正常執行,當其他執行緒呼叫notify()或notifyall()時才會喚醒當前執行緒,但是並不會馬上獲得物件鎖,只是進入就緒狀態,準備搶鎖。

sleep()是thread類的靜態方法,wait()是object類的例項方法

sleep()不會釋放物件鎖,wait()會釋放物件鎖

sleep()可以用在任何地方,wait()只能用在同步**塊中

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...