生產者與消費者模型(JAVA實現)

2021-09-19 23:35:29 字數 1148 閱讀 7784

生產者與消費者問題是執行緒模型中的經典問題,假設生產者和消費者分別是兩個類,兩個類之間互相呼叫存在著依賴關係,如果乙個類被改變將會影響另外乙個類。需要乙個商品緩衝區來實現解耦由生產者執行緒生產出乙個商品之後將由消費者執行緒開始消費。

生產者與消費者模型實現思路如下圖:

首先建立商品類,用於搭建消費者與生產者之間的緩衝區。

public class goods 

public string getid()

public string getname()

public string tostring() ';}}

接下來建立生產者和消費者模型。

生產者模型完成的業務如下:

(1)生產商品;

(2)將生產的商品新增到容器;

(3)如果容器已經滿了,等待消費(等通知);

class myproducter  implements  runnable

public void run() catch (interruptedexception e)

synchronized(this.queue) catch (interruptedexception e)

} else }}

}}

消費者模型完成的業務如下:

(1)消費商品;

(2)從容器中取出商品;

(3)如果容器為空,通知生產者生產;

class myconsumers  implements   runnable

public void run() catch (interruptedexception e)

synchronized(this.queue) else }}}}}

最後就是完成測試類,具體建立如下:

public class testconsumerandproducter 

//消費者執行緒

for(int i=0;i<5;i++) }}

Java 生產者 消費者模型

生產者消費者問題是執行緒模型中的經典問題 生產者和消費者在同一時間段內共用同一儲存空間,生產者向空間裡生成資料,而消費者取走資料。此處實現如下情況的生產 消費模型 生產者不斷交替地生產兩組資料 姓名 1 內容 1 姓名 2 內容 2 消費者不斷交替地獲取這兩組資料,這裡的 姓名 1 和 姓名 2 模...

Java 生產者消費者模型

1.基於synchronzied底層,與wait notifyall實現 object類提供的wait notify方法,配合synchronized使用,操作更底層,可擴充套件性和可控制性小。先來介紹一下wait notify notifyall 方法 wait object類的方法,只能在同步方...

生產者與消費者模型

先介紹幾個函式 生產消費者模型 二者共享資料value,這裡,生產者是producter,消費者是consumer。生產者負責放物品到value中,消費者使用wait 等待生產者的通知。當得到通知後,消費者取出物品,並且用notify 通知生產者,可以再放下一批物品。例項 package cn.ed...