Java sleep和wait例項比較

2021-08-03 03:42:13 字數 862 閱讀 3748

1、**示例

public

class

testsyncro

}class

thread1

extends

thread

@override

public

void run()

}class

thread2

extends

thread

@override

public

void run()

}class

personcatch(exception ex)

if(i==3)catch(exception ex)

}}

}}

2、執行結果

thread-0 call start

thread-0

1thread-1 call start

thread-0

2thread-0

3thread-1

1thread-1

2thread-1

3thread-0

4thread-0

5thread-0 call end

thread-1

4thread-1

5thread-1 call end

3、結果分析

(1)thread-0執行列印1,2,3期間,都有呼叫sleep方法,但是thread-1並沒有機會執行,說明sleep沒有釋放物件鎖;

(2)thread-0執行到列印3時,呼叫了wait方法,這時thread-1執行了,說明wait釋放了物件鎖

java sleep 和wait 的區別

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

Java sleep和wait區別總結

執行緒的資源有不少,但應該包含cpu資源和鎖資源這兩類。1 sleep long mills 讓出cpu資源,但是不會釋放鎖資源。2 wait 讓出cpu資源和鎖資源。鎖是用來執行緒同步的,sleep long mills 雖然讓出了cpu,但是不會讓出鎖,其他執行緒可以利用cpu時間片了,但如果其...

java sleep與wait的區別

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