##1、生产者消费者模式
- 生产者消费者模式并不是GOF提出的23种设计模式之一,23种设计模式都是建立在面向对象的基础之上的,但其实面向过程的编程中也有很多高效的编程模式,生产者消费者模式便是其中之一,它是我们编程过程中最常用的一种设计模式。
- 生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。
- [生产者]----生产产品--->[缓冲区]----消费产品--->[消费者]
- 实现方法:
- wait()和notify()的实现
- 可重入锁ReentrantLock和Condition的await() / signal()方法的实现
- 阻塞队列BlockingQueue的实现
- 信号量Semaphore的实现:通过释放令牌的形式去控制生产者消费者的上限,使用互斥锁保证每次最多只有一个角色去修改共享变量。
- 管道输入输出流PipedInputStream和PipedOutputStream的实现,这种只能是1对1的,不做实现了
- 使用Disruptor框架