面試 sleep()和wait()的區別

2021-10-04 09:26:31 字數 465 閱讀 8488

其實理論上 wait 和 sleep 完全是沒有可比性的,因為乙個是用於執行緒之間的通訊的,乙個是讓執行緒阻塞一段時間,唯一的相同點就是都可以讓執行緒放棄執行一段時間。用生活中的例子說的話就是婚禮時會吃糖,和家裡自己吃糖之間有差別。說白了放棄執行緒執行只是 wait 的一小段現象。

當然為了面試的目的,我們還是總結下:

1、wait 之前需要請求鎖,而wait執行時會先釋放鎖,等被喚醒時再重新請求鎖。這個鎖是 wait 對像上的 monitor lock

2.、sleep 是無視鎖的存在的,即之前請求的鎖不會釋放,沒有鎖也不會請求。

3.、wait 是 object 的方法。sleep 是 thread 的靜態方法

4、sleep()方法需要捕獲異常,wait()方法不需要捕獲異常

5、sleep可以再任何地方使用,而wait只能在synchronized方法或synchronized塊中使用。

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