Java sleep和wait區別總結

2021-08-18 21:51:19 字數 290 閱讀 5103

執行緒的資源有不少,但應該包含cpu資源和鎖資源這兩類。

(1)sleep(long mills):讓出cpu資源,但是不會釋放鎖資源。

(2)wait():讓出cpu資源和鎖資源。

鎖是用來執行緒同步的,sleep(long mills)雖然讓出了cpu,但是不會讓出鎖,其他執行緒可以利用cpu時間片了,但如果其他執行緒要獲取sleep(long mills)擁有的鎖才能執行,則會因為無法獲取鎖而不能執行,繼續等待。

但是那些沒有和sleep(long mills)競爭鎖的執行緒,一旦得到cpu時間片即可執行了。

java sleep 和wait 的區別

1 這兩個方法來自不同的類分別是,sleep來自thread類,和wait來自object類。sleep是thread的靜態類方法,誰呼叫的誰去睡覺,即使在a執行緒裡呼叫了b的sleep方法,實際上還是a去睡覺,要讓b執行緒睡覺要在b的 中呼叫sleep。2 最主要是sleep方法沒有釋放鎖,而wa...

Java sleep和wait例項比較

1 示例 public class testsyncro class thread1 extends thread override public void run class thread2 extends thread override public void run class personc...

java sleep與wait的區別

最近被問到這個問題,查詢資料後寫個例子,可看出其中差別。1 首先wait是object的方法,sleep是thread的方法。2 object.wait被某執行緒呼叫,要確保該執行緒能監控該物件,否則丟擲illegalmonitorstateexception。之後該執行緒放棄對次object的sy...