wait、notify、notifyAll
何時使用
在多線程環境下,有時候一個線程的執行,依賴于另外一個線程的某種狀态的改變,這個時候,我們就可以使用wait與notify或者notifyAll
wait跟sleep的差別
wait會釋放持有的鎖,而sleep不會,sleep隻是讓線程在指定的時間内,不去搶占cpu的資源 注意點 wait notify必須放在同步代碼塊中, 且必須擁有目前對象的鎖,即不能取得A對象的鎖,而調用B對象的wait 哪個對象wait,就得調哪個對象的notify
notify跟notifyAll的差別
nofity随機喚醒一個等待的線程 notifyAll喚醒所有在該對象上等待的線程
代碼實操
1.兩個線程,隻用while循環+flag來判斷是否執行,消耗資源
public class Demo {
private static volatile