Java線程:併發協做-生產者消費者模型
對於多線程程序來講,無論任何編程語言,生產者和消費者模型都是最經典的。就像學習每一門編程語言同樣,Hello World!都是最經典的例子。
實際上,準確說應該是「生產者-消費者-倉儲」模型,離開了倉儲,生產者消費者模型就顯得沒有說服力了。
對於此模型,應該明確一下幾點:
一、生產者僅僅在倉儲未滿時候生產,倉滿則中止生產。
二、消費者僅僅在倉儲有產品時候才能消費,倉空則等待。
三、當消費者發現倉儲沒產品可消費時候會通知生產者生產。
四、生產者在生產出可消費產品時候,應該通知等待的消費者去消費。
此模型將要結合java.lang.Object的wait與notify、notifyAll方法來實現以上的需求。這是很是重要的。
public
class
Test {
public
static
void
main(String[] args) {
Godown godown =
new
Godown(30);
Consumer c1 =
new
Consumer(50, godown);
Consumer c2 =
new
Consumer(20, godown);
Consumer c3 =
new
Consumer(30, godown);
Producer p1 =
new
Producer(10, godown);
Producer p2 =
new
Producer(10, godown);
Producer p3 =
new
Producer(10, godown);
Producer p4 =
new
Producer(10, godown);
Producer p5 =
new
Producer(10, godown);
Producer p6 =
new
Producer(10, godown);
Producer p7 =
new
Producer(80, godown);
c1.start();