生產者-消費者(producer-consumer)問題是乙個著名的程序同步問題。它描述的是:有乙個生產者程序在生產產品,並將這些產品提供給消費者程序去消費。為使生產者程序與消費者程序併發執行,在兩者之間設定了乙個具有n個緩衝池,生產者程序將它所生產的產品放入乙個緩衝區中;消費者程序從乙個緩衝區中取走產品去消費。儘管所有的生產者程序和消費者程序都是非同步方式執行的,但它們之間必須保持同步,既不允許消費者程序到乙個空緩衝區去取東西,也不允許生產者程序向乙個已裝滿產品並且未被取走的緩衝區中投放產品。
public class producerconsumer } //食物類 class foods //重寫tostring方法 public string tostring() } //放食物的籃子類 class basket catch(interruptedexception e) } this.notify(); arrfood[num] = f; num++; } public synchronized foods pop() catch(interruptedexception e) } this.notify(); num--; return arrfood[num]; } } //生產者類 class producer implements runnable public void run() catch(interruptedexception e) } } } //消費者類 class consumer implements runnable public void run() catch(interruptedexception e) } } }
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
《生產者與消費者》簡單例子?
package communication 執行結果不太能理解,1 開始消費者呼叫消費方法時處於等待狀態,此時喚起生產者執行緒 生產者開始生產共享資料之後,消費者進行消費,但是當共享資料為空,所有消費者必須等待,生產者繼續生產,然後消費者再次消費 如此迴圈直到程式執行最後,可以看到執行緒一直等待。這...
生產者與消費者
include include include include include include define size of buffer 10 int buffer size of buffer 緩衝陣列 int in 0,out 0 採用迴圈佇列方式進行陣列的訪問 宣告訊號量 sem t ful...