生产者-消费者模型
Last updated
Last updated
生产者消费者模型可以描述为: ①生产者持续生产,直到仓库放满产品,则停止生产进入等待状态;仓库不满后继续生产; ②消费者持续消费,直到仓库空,则停止消费进入等待状态;仓库不空后,继续消费; ③生产者可以有多个,消费者也可以有多个;
对应到程序中,仓库对应缓冲区,可以使用队列来作为缓冲区,并且这个队列应该是有界的,即最大容量是固定的;进入等待状态,则表示要阻塞当前线程,直到某一条件满足,再进行唤醒。
常见的实现方式主要有以下几种:
使用wait()
和notify()
使用Lock
和Condition
使用信号量Semaphore
使用JDK
自带的阻塞队列
使用管道流
Java 实现生产者 – 消费者模型:各种实现方式的性能 高性能的生产者-消费者:无锁的实现:无锁实现 Java生产者和消费者模型的5种实现方式 生产者/消费者问题的多种Java实现方式 Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析:两种常用阻塞队列的区别