生产者-消费者模式是一个经典的多线程设计模式,它为多线程的协作提供了良好的解决方案。在生产者-消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程负责处理用户请求。生产者和消费者之间通过共享内存缓冲区进行通信。
生产者-消费者模式中的内存缓冲区的主要功能是数据在多线程间的共享。
1.创建一个被消费的对象
public final class Data{
private String id;
private String name;
//getter/setter(),toString()省略,构造方法省略
}
2.创建一个生产者
public class Provider implements Runnable{
//共享缓存区
private BlockingQueue queue;
//多线程间是否启动变量,有强制从主内存中刷新的功能。即时返回线程的状态
private volatile boolean isRunning = true;
//id生成器
private static AtomicInteger count = new AtomicInteger();
//随机对象
private static Random r = new Random();
public Provider(BlockingQueue queue){
this.queue = queue;
}
@Override
public void run() {
while(isRunni