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