Java:生產者消費者示例——處理並發讀/寫

已發表: 2019-02-17

生產者消費者示例 - 處理並發讀:寫

producer-consumer problem (也稱為bounded-buffer problem )是多進程同步問題的經典 Java 示例。

該問題描述了兩個進程, the producerthe consumer ,它們共享一個用作隊列的公共、固定大小的緩衝區。 生產者的工作是生成一條數據,將其放入緩衝區並重新開始。

同時,消費者一次只消費一份數據(即從緩衝區中刪除)。 問題是確保生產者不會嘗試在緩衝區已滿時將數據添加到緩衝區中,並且消費者不會嘗試從空緩衝區中刪除數據。

下面簡單的 Java 程序會產生這個問題:

Java 示例——生產者消費者問題

問題:

解決:

添加關鍵字synchronized以在我們使用數據時鎖定data

更好的 Java 程序:

Java 生產者消費者示例結果:

java-producer-consumer-tutorial-crunchify