前些天参加一次面试,被问到生产者消费者设计模式的问题?
当时很尴尬,因为之前在大学里的操作系统课程,只学过理论,毕业后从事的开发工作也没有应用过,所以一时想不起来。
后来在网上查了一下资料。终于知道了原理以及代码实现。
生产者把生产出来的产品放到仓库里,消费者从仓库里取出产品进行消费。
生产者和消费者并未直接建立联系,而是通过仓库这一缓冲区域。
如果仓库满了,生产者就等待,通知消费者可以进行消费。
如果仓库存量小于消费者要消费的数量,消费者就等待。
其实本质是多线程同步问题。
关于代码的具体实现网上有很多例子。这里不再赘述。
一种是使用wait和notify自己实现。
一种是使用java5提供的阻塞队列(BlockingQueue)实现。