生产者-消费者模式是在生产者与消费者之间加入一个“桥梁参与者”,以这个桥梁参与者缓冲线程之间的处理速度差。
一般来说,可能存在多个生产者与多个消费者,不过也有可能生产者与消费者都只有一个。当
两方都只有一个时,我们也称之为Pipe Pattern.
范例程序中有2名厨师cook1、cook2 不停地做蛋糕放在桌子上,有2名顾客consumer1、consumer2不停地吃(胃口好,吃不饱),程序的行为如下所示:
(1) 厨师(MakerThread)一直做蛋糕(String),放在桌子(Table)上
(2) 桌子上最多可以放3个蛋糕
(3) 桌上已经放满3个蛋糕,厨师会等待,直到有放蛋糕的位置
(4) 顾客(EaterThread)会拿桌子(Table)上的蛋糕去吃,桌子上没有蛋糕时,客人需要等待,直到桌子上有蛋糕为止
生产者-消费者 UML图如下所示
源代码:
package com.multithread.producerconsumer;
/**
* 放置蛋糕的桌子
* @author Administrator
* @date 2014-08-02
*/
public class Table {
private f