wait 和sleep 的區別

2021-09-28 22:44:37 字數 468 閱讀 1587

兩者區別

wait()方法時object類的方法 sleep()是thread類的方法

sleep()讓執行緒暫停一段時間,時間一到自動恢復執行,不設計執行緒間的通訊 呼叫sleep()方法不會釋放鎖。

wait() 呼叫後執行緒會釋放占用的鎖,用於執行緒間的通訊,只有其他執行緒呼叫notify()方法或者notifyall()才醒來

使用域不同 wait()方法必須放在同步**塊和同步控制方法中使用,sleep()方法則可以放在任何地方使用

sleep()方法必須捕獲異常 而wait() notify() notifyall() 不需要捕獲異常

在sleep過程中 可能被其他物件呼叫它的interrupt() 產生interruptedexception 由於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...