測試類
package gcc.twothreadtransdata.producerandconsumer;
import org.slf4j.logger;
import org.slf4j.logge***ctory;
/** * 多個執行緒之間通訊
* 消費者生產者模式
* 多個生產者和消費者
* 流程:
* 多個執行緒(生產者,消費者)公用一把鎖
* 本例設定了兩個生產者執行緒和兩個消費者執行緒
* 啟動執行緒,run方法內迴圈呼叫生產和消費方法
* 無資料,生產,notifyall喚醒所有wait等待(不管是消費者的還是生產者的)
* 有資料,不生產,wait等待
* 有資料,消費,資料置空,notifyall喚醒所有wait等待
* 無資料,不消費,wait等待
*/public class testpcmodel
/*thread.sleep(2000);
thread threadarray = new thread[thread.currentthread().getthreadgroup().activecount()];
thread.currentthread().getthreadgroup().enumerate(threadarray);
for (int i = 0; i 生產者類
package gcc.twothreadtransdata.producerandconsumer;
import org.slf4j.logger;
import org.slf4j.logge***ctory;
public class producer
public void setvalue()
logger.info("開始生產:"+thread.currentthread().getname());
string value=system.currenttimemillis()+"--"+system.nanotime();
valueobject.value=value;
lock.notifyall();
}} catch (interruptedexception e)
}}
消費者類
package gcc.twothreadtransdata.producerandconsumer;
import org.slf4j.logger;
import org.slf4j.logge***ctory;
public class consumer
public void getvalue()
logger.info("開始消費:"+thread.currentthread().getname());
valueobject.value="";
lock.notifyall();
}} catch (interruptedexception e)
}}
生產者執行緒
package gcc.twothreadtransdata.producerandconsumer;
public class threadp extends thread
public void run()
}}
消費者執行緒
package gcc.twothreadtransdata.producerandconsumer;
public class threadc extends thread
public void run()
}}
輔助類
package gcc.twothreadtransdata.producerandconsumer;
public class valueobject
Java多執行緒14 生產者 消費者模型
什麼是生產者 消費者模型 一種重要的模型,基於等待 通知機制。生產者 消費者模型描述的是有一塊緩衝區作為倉庫,生產者可將產品放入倉庫,消費者可以從倉庫中取出產品,生產者 消費者模型關注的是以下幾個點 生產者 模型作為一種重要的模型,它的優點在於 利用wait notify 實現生產者 消費者模型 既...
Java多執行緒基礎 8 生產者 消費者和佇列
利用wait 和notify 實現任務間的協同合作其實是一種非常低階的方式,我們還可以使用同步佇列來解決任務協作問題,blockingqueue在任何時刻都只允許乙個任務插入或者移除佇列,如果消費者試圖從佇列中獲取元素,而此時該隊列為空,那麼佇列可掛起消費者,當佇列內有元素時再恢復消費者任務。比wa...
多執行緒通訊(二)生產者 消費者模式
生產者 消費者模式其原理是基於wait notify實現的。通過 更能便於理解,廢話不多說,上 生成者和消費者一對一模式 生產者public class producer public void buildproduct 生產產品並通知消費者 thread.sleep 1000 system.out...