1:來自不同的類
wait()來自Object類,sleep()來自Thread類
2 關于鎖的釋放
wait()會釋放鎖,sleep()不會釋放鎖,可以理解為抱著鎖睡覺
3使用范圍不同
==sleep()可以在任何地方使用,wait()只能在同步代碼塊中使用==
4是否需要捕獲例外
wait()不需要捕獲例外
sleep()必須要捕獲例外
uj5u.com熱心網友回復:
wait()、notify()、notifyAll();搭配使用,wait() 是獲取使用必修是物件拿到 物件頭Monitor的情況,所以wait()經常和synchronized 一起出現。
wait 是object 提供方法,所以在多執行緒編程的時候 搞清楚是哪個Object 在wait(),這個object 應該和synchronized 的物件是同一個。
sleep()是執行緒暫停,不會釋放鎖,但會釋放計算資源。之前一道經典的讓cpu 占用率列印出正弦函式就是通過sleep()實作。
wait 和 sleep 使用不當都會有對應例外出現。
建議研究一下 java 物件頭
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253261.html
標籤:Java SE
