生产者-消费者模型

概述

生产者消费者模型可以描述为: ①生产者持续生产,直到仓库放满产品,则停止生产进入等待状态;仓库不满后继续生产; ②消费者持续消费,直到仓库空,则停止消费进入等待状态;仓库不空后,继续消费; ③生产者可以有多个,消费者也可以有多个;

对应到程序中,仓库对应缓冲区,可以使用队列来作为缓冲区,并且这个队列应该是有界的,即最大容量是固定的;进入等待状态,则表示要阻塞当前线程,直到某一条件满足,再进行唤醒。

常见的实现方式主要有以下几种:

  • 使用wait()notify()

  • 使用LockCondition

  • 使用信号量Semaphore

  • 使用JDK自带的阻塞队列

  • 使用管道流

参考

Java 实现生产者 – 消费者模型:各种实现方式的性能 高性能的生产者-消费者:无锁的实现:无锁实现 Java生产者和消费者模型的5种实现方式 生产者/消费者问题的多种Java实现方式 Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析:两种常用阻塞队列的区别

完整代码示例在此

Last updated