sleep和wait的區別

2021-09-24 08:50:13 字數 450 閱讀 9713

sleep不會釋放鎖,告訴cpu多少時間內不需要為這個執行緒分配時間片,wait是會釋放鎖,進行阻塞佇列,等待喚醒,即使喚醒之後,也需要參與競爭鎖。

sleep是thread的方法,wait和notify是obejct的方法

wait和notify 必須在synchronize的範圍內使用。

wait是非靜態方法,sleep是靜態方法。

還有suspend ,也是不釋放鎖,但是這個已經不推薦用了,

不推薦使用 suspend() 去掛起執行緒的原因,是因為 suspend() 在導致執行緒暫停的同時,並不會去釋放任何鎖資源。其他執行緒都無法訪問被它占用的鎖。直到對應的執行緒執行 resume() 方法後,被掛起的執行緒才能繼續,從而其它被阻塞在這個鎖的執行緒才可以繼續執行。

但是,如果 resume() 操作出現在 suspend() 之前執行,那麼執行緒將一直處於掛起狀態,同時一直占用鎖,這就產生了死鎖。

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