天天看點

Java中wait、sleep、yield方法的差別

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是針對一個線程。