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