生产消费模式
- 生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。生产者生产数据到缓冲区中,消费者从缓冲区中取数据。如果缓冲区已经满了,则生产者线程阻塞;如果缓冲区为空,那么消费者线程阻塞。
- 缓冲区作用
- . 解耦,生产者和消费者只依赖缓冲区,而不互相依赖
- . 支持并发和异步
- 消费者和生产者同时对仓库(即这里的队列)里的货物进行操作,这里需要注意的是线程的控制和数据的线程安全问题。消费者和生产者都和仓库有着关联,但不一定是聚合关系,只是消费者和生产者持有仓库类。
- 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。
- 生产者-消费者模式的三种实现方式
- 方式一:synchronized、wait和notify
- 方式二:lock和condition的await、signalAll
- 方式三:BlockingQueue