定义:生产者消费者问题,也称有界缓冲区问题。两个进程共享一个公共固定大小的缓冲区,其中一个是生产者(producer),将消息放入缓冲区;另一个是消费者(consumer),从缓冲区取出信息。
优点:
* 解耦
生产者与消费者不互相依赖,只依赖于缓冲区,降低耦合
* 支持并发
这个模式主要是用来处理并发问题的,生产者和消费者是两个独立的并发主体
* 支持忙闲不均
通过缓冲区的状态来调整生产者和消费者的运行,缓冲区为空则使消费者睡眠,缓冲区为满时则使生产者睡眠。
**java实现方式**
---
在java中共有四种方法支持同步,其中三种是同步方法,一个是管道方法:
1. wait()/notify()
2. await()/signal()
3. BlockingQueue
4. PipedInputStream/PipedOutputStream
优点:
* 解耦
生产者与消费者不互相依赖,只依赖于缓冲区,降低耦合
* 支持并发
这个模式主要是用来处理并发问题的,生产者和消费者是两个独立的并发主体
* 支持忙闲不均
通过缓冲区的状态来调整生产者和消费者的运行,缓冲区为空则使消费者睡眠,缓冲区为满时则使生产者睡眠。
**java实现方式**
---
在java中共有四种方法支持同步,其中三种是同步方法,一个是管道方法:
1. wait()/notify()
2. await()/signal()
3. BlockingQueue
4. PipedInputStream/PipedOutputStream