1 目的

生产者/消费者模式是多线程设计模式中最常用的一种设计模式。主要用于消息通知,批量处理数据等。

2 设计

生产者/消费者模式在java语言中一般使用阻塞队列来实现的。阻塞队列的实现原理,就是通过加锁来控制增加元素和移除元素的同步性,使得对于阻塞队列在多线程中是线程安全的,不会出现一个线程拿到的元素是另一个线程已经移除的元素。

那么生产者/消费者模式也需要这样的一个存放数据的队列,生产者负责往队列里put数据,消费者负责不断take取数据。这样生产者和消费者模式就实现了。其领域模型如下图所示:

其中使用了ArrayBlockingQueue最常见的阻塞队列作为缓存,包装了Channel接口操作队列,生产者Producer和Consumer都依赖这个Channel。