sleep和wait的區別

2021-10-04 02:19:33 字數 806 閱讀 8213

本質區別:thread.sleep()只讓出cpu,不讓出lock;object.wait()既讓出cpu,又讓出lock;

1 thread.sleep()可以在任何地方使用,object.wait()必須在synchronized方法或者synchronized塊中使用(必須先獲得鎖,才能釋放鎖)

2 sleep是thread類的方法,wait是object類的方法

package com.mall.controllor.alene;

/** * created by 60341 on 2020/3/18.

*/public class waitsleepdemo catch (interruptedexception e) }}

}).start();

try catch (interruptedexception e)

new thread(new runnable() catch (interruptedexception e) }}

}).start();

/*輸出:

thread a is waiting for the lock

thread a get lock

thread b is waiting for the lock

thread a do wait method

thread b get lock

thread b is sleeping 10 ms

thread b is done

thread a is done*/

}}

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