wait和sleep的差別
相同:
1.執行Sleep()方法和Waiting()方法都會釋放運作權,即讓出CPU
2.執行Sleep()方法和Waiting()方法都會讓目前線程進入阻塞狀态
不同點:
1.wait隻能在同步(synchronize)環境中被調用,而sleep沒這個限制。
2.進入wait狀态的線程能夠被notify和notifyAll線程喚醒,但是進入sleeping狀态的線程不能被notify方法喚醒,sleep()方法可以使用interrupt()方法将休眠的線程喚醒。
3.wait通常有條件地執行,線程會一直處于wait狀态,直到某個條件變為真。但是sleep僅僅讓你的線程進入睡眠狀态。
4.wait方法在進入wait狀态的時候會釋放對象的鎖,但是sleep方法不會。
5.wait方法是針對一個被同步代碼塊加鎖的對象,而sleep是針對一個線程。