對於我們的銀行賬戶,兩個執行緒之間並沒有聯絡,這就會出現餘額不足但是還能取錢的狀況,為了解決這個問題,我們就使用執行緒間通訊來解決
wait()方法:中斷方法的執行,使執行緒等待
notify()方法:喚醒處於等待的某一線程,使其等待結束
notifyall()方法:喚醒處於等待的所有執行緒,使其等待結束
package threadproj;
public class consumer implements runnable
@override
public void run() catch (interruptedexception e)
}}}
package threadproj;
public class producer implements runnable
@override
public void run() catch (interruptedexception e)
} }}
package threadproj;
public class queue
} catch (interruptedexception e)
} system.out.println("消費" + n);
// 消費完畢,容器中沒資料了
flag = false;
notifyall();
return n;
} public void setn(int n)
} catch (interruptedexception e)
} system.out.println("生產" + n);
this.n = n;
// 生產完畢,容器中已經有資料
flag = true;
notifyall();
}}
package threadproj;
public class testa
}
java執行緒間通訊
執行緒間通訊 其實就是多個執行緒在操作同乙個資源,但是操作的動作不同 等待喚醒機制 wait notify notifyall 都是用在同步中,因為要對持有監視器 鎖 的執行緒操作。所以要是用在同步中,因為只有同步才具有鎖。等待喚醒必須是同乙個鎖,而鎖可以是任意物件,所以可以被任意物件呼叫的方法定義...
Java執行緒間通訊
要求用子執行緒和主線程實現 子執行緒輸出20次,主線程輸出50次,然後再子執行緒輸出20次,主線程輸出50次,如此迴圈20次 1 建立乙個用於輸出的業務類 business class business catch interruptedexception e for int i 0 i 10 i ...
java執行緒間通訊
執行緒間進行輸入 輸出通訊最常用的方式是 管道 方式。乙個執行緒從管道一端寫入資料,另乙個執行緒從管道另一端讀出資料。public class pipedio class pipesender extends thread public void run catch ioexception e cl...