1. 程式人生 > >wait 與 sleep 區別

wait 與 sleep 區別

共有四條不同點:

1.來自不同的類

wait() 方法屬於Object類,sleep()方法屬於Thread類;

2. 資源的釋放(鎖的釋放)

wait()方法會釋放CPU執行權給其他的執行緒,而自身進入等待池中等待;sleep()方法會佔用CPU,不讓出CPU的執行權。也可以解釋為sleep沒有釋放鎖,而wait()釋放了鎖。

(通常wait() 不會加時間進行限制,需要等待其他執行緒呼叫 notify() 或者 notifyAll() 喚醒等待池中所有的執行緒,才會進入就緒佇列中等待OS分配系統資源)

3.適用範圍

wait() 以及notify() 和 notifyAll() 只能在同步控制的方法或者同步程式碼塊中只是用,而sleep() 幾乎可以用在任何地方;

4. 捕獲異常

sleep必須捕獲異常,而wait() 以及notify() 和 notifyAll()不需要捕獲異常