執行緒sleep 和wait 的區別

2021-09-12 23:42:45 字數 742 閱讀 8887

1、這兩個方法來自不同的類分別是thread和object

2、最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。

3、wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用(使用範圍)

4、sleep必須捕獲異常,而wait,notify和notifyall不需要捕獲異常

5、sleep是thread類的靜態方法。sleep的作用是讓執行緒休眠制定的時間,在時間到達時恢復,也就是說sleep將在接到時間到達事件事恢復執行緒執行。wait是object的方法,也就是說可以對任意乙個物件呼叫wait方法,呼叫wait方法將會將呼叫者的執行緒掛起,直到其他執行緒呼叫同乙個物件的notify方法才會重新啟用呼叫者。

附:sleep是靜態方法,是誰掉的誰去睡覺,就算是在main執行緒裡呼叫了執行緒b的sleep方法,實際上還是main去睡覺,想讓執行緒b去睡覺要在b的**中掉sleep

sleep(100l)是占用cpu,執行緒休眠100毫秒,其他程序不能再占用cpu資源,wait(100l)是進入等待池中等待,交出cpu等系統資源供其他程序使用,在這100毫秒中,該執行緒可以被其他執行緒notify,但不同的是其他在等待池中的執行緒不被notify不會出來,但這個執行緒在等待100毫秒後會自動進入就緒佇列等待系統分配資源,劃重點,sleep(100)在100毫秒後肯定會執行,但wait在100毫秒後還有等待os呼叫分配資源,所以wait100的停止執行時間是不確定的,但至少是100毫秒。

執行緒sleep 和wait 的區別

選擇題經常遇見 1 sleep 方法是執行緒類thread wait 是object類的方法。2 最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。3 wait,notify和notifyall只能在同步控制方法或者同步控制塊裡面使用,而sleep可...

執行緒中sleep和wait的區別

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

多執行緒wait 和sleep 的區別

wait 位於同步中,可以釋放鎖的資源 sleep 不是釋放鎖的資源 wait需要notify才能從休眠狀態變為執行狀態,sleep到期之後,會自動從休眠狀態變為執行狀態。官方話語如下 對於sleep 方法,我們首先要知道該方法是屬於thread類中的。而wait 方法,則是屬於object類中的。...