sleep和wait的區別?

2021-08-05 19:02:25 字數 679 閱讀 3843

1.sleep方法

1)sleep()方法是使得當前執行緒進入停滯狀態(阻塞狀態),讓出cpu的使用權,目的是不讓乙個執行緒獨霸程序獲取的cup資源,

從而給其他執行緒時間使用程序獲取的cpu資源

2)sleep是thread類的靜態方法,當sleep用在synchronized的同步塊中時候,當前執行緒雖然休眠但是並沒有釋放同步鎖機制,此時其它執行緒是不能訪問同步塊中的內容的(睡著了,也佔著資源,直到休眠結束);

3)sleep時間到了休眠不一定會立即執行,因為此時其它執行緒正在執行,除非當前執行緒優先順序高於其它執行緒;

4)sleep休眠結束的情況:1.休眠時間到了 2.執行緒被終止system.exit(0) 3.程序被強制終止;

2.wait

1).wait() 方法是object 物件的方法,他也是讓執行緒阻塞,它的阻塞是將當前執行緒放入等待池中,同時釋放了物件鎖,也就是其它執行緒可以可以訪問它的物件鎖中的資源;

2)wait()必須在靜態塊或靜態方法中使用,否則會丟擲illegalmonitorstateexception異常;一般和object的notify() 或notifyall() 方合用,稱作等待喚醒機制;

3)wait(time) 還可以設定等待的時間;

3.wait和sleep的區別:

1)作用在同步鎖時候,sleep是休眠,保持物件鎖 ;wait是休眠,釋放物件鎖 2

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