sleep和wait的區別

2021-09-26 02:44:41 字數 436 閱讀 1755

a.屬於類不同,sleep屬於thread類的靜態方法,wait屬於object的超類的成員方法

b.sleep時需要指定睡眠時間,且睡眠過程不會釋放鎖,讓出cpu執行權,wait方法可以指定時間也可以不指定,呼叫後會釋放鎖,等到其它執行緒呼叫notify或者notifyall方法,或者等待時間到後才會讓執行緒進入就緒狀態,搶占cpu執行權(但是使用notify時,只能喚醒等待當前物件鎖的隨機乙個執行緒,使用時特別注意)

c.sleep需要丟擲異常,而wait不需要

d.使用位置不同,sleep可以在任意位置使用,而wait只能在同步方法或者同步**塊中使用。

注意:sleep不會釋放鎖,指的是不會釋放執行緒鎖,即當前執行緒只是做了暫停而已,與物件鎖並沒有直接關係,如果有同步資源的鎖,別的執行緒想使用這個鎖時,必須等待sleep的執行緒執行完釋放鎖,如果沒有資源同步的鎖,那麼別的執行緒任然可以使用當前資源。

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