sleep和wait的區別

2021-10-11 23:56:25 字數 615 閱讀 6564

sleep()和wait()都會使當前執行緒進入阻塞狀態。

sleep()和wait()都需要捕獲異常。

public

final

native

void

wait

(long timeout)

throws interruptedexception;

public

static

native

void

sleep

(long millis)

throws interruptedexception;

兩個方法宣告位置不同,sleep()是宣告在thread中的方法,wait()是宣告在object中的方法。

sleep()可以在任意場景使用,wait()必須使用在同步**塊或者同步方法中(否則會丟擲illegalmonitorstateexception異常)。

在同步**塊或者同步方法中,使用sleep()不會釋放鎖,使用wait()會釋放鎖。

wait()可以在指定時間後自己喚醒也可以使用notity()或者notityall()來喚醒,notity()或者notityall()不能喚醒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...