sleep 和wait 的區別 我的粗淺理解

2021-07-01 19:18:21 字數 525 閱讀 4249

sleep()和wait()都用於進行執行緒控制,其本質區別是sleep()不釋放同步鎖,wait()釋放同步鎖

也就是說sleep()執行的時候,其他執行緒是不可以使用同步控制塊或者方法,就是說某執行緒執行sleep()時,我只是佔著床(資源即cpu等)睡覺,還不許別人用。     而wait()則不然,執行緒執行wait(),我就把床(資源即cpu)讓出來。其他程序可以使用,我在旁邊wait(等待)。

由於其本質的不同,導致其方法實現也是大相徑庭,sleep()來自thread類,wait()來自object類,sleep(milliseconds)是過了指定時間醒來變為可執行狀態,當然也可以強行用interreput()喚起。wait()的話直接用notify()就可以直接喚起了。由於wait()是object類,所以所有物件都可以用wait().當某物件obj進入wait狀態時,其他程序可以應用obj.notify()就可以喚起,本質上是一種執行緒間的通訊方式。sleep是thread的靜態方法,是乙個程序內部的操作。

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