消費者和生產模式是典型的軟體應用場景,比如工廠生產出產品,先送到商店,消費者再到商店去買。
生產者不會每生產乙個就送到商店去,一般是生產一定數量的產品,比如生產數量為n時,再送到商店去,這樣減少來回運輸的成本。這樣當商店的n個產品賣完時,消費者再來買時需要等待(wait),當商店有n個產品未賣時,生產者需要停止生產,等待產品銷售,產品量小於n時再開始生產。
下面以**來實現上面的場景:
生產類:
/**
* 生產者
*/public class producer implements runnable
/*** 生產產品
*/public void produce(product p)
public void run()
}}
消費類:
/**
* 消費者
*/public class consumer implements runnable
/*** 購買產品
*/public product buy()
public void run() }
}
商店類:
/**
* 商店
*/public class shop catch (interruptedexception e)
} else
return _list.remove(_list.size()-1); }
/*** 採購產品
* @param p
*/public synchronized void purchase(product p) catch (interruptedexception e)
} else
_list.add(p);
}}
產品類:
/**
* 產品
*/public class product
public void setname(string name)
}
測試類:
public class processtest
}
處理場景是這樣的,商店不停採購和銷售產品,但商店的庫存有限,只能存放定量產品,當商店庫存滿時,停止採購,此時生產者處於暫停狀態,直到商店庫存量小於最大值時恢復生產,消費者不停購買產品,當商店的產品庫存量為0時,消費者停止購買,處於等待狀態,等商店庫存量大於0時,再恢復購買。 生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者和消費者模式
一 建立個生產者類 package consumerandproducer author tanhw119214 version jdk1.8.0 171 date on 2018 8 2 16 57 public class producer implements runnable public ...
生產者 消費者模式
一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...