本篇文章主要介绍了" 生产者与消费者模式",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
这种设计模式主要的使用场景是JAVA并发中,一个使用阻塞队列实现的Demo(使用链表实现的有界阻塞队列)如下:import java.util.concurre...
这种设计模式主要的使用场景是JAVA并发中,一个使用阻塞队列实现的Demo(使用链表实现的有界阻塞队列)如下:
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
publicclassConsumerAndProducer
{publicstaticvoid main(String[] args)
{
//规定一个缓冲区
BlockingQueue buffer = new LinkedBlockingQueue<>();
//二者使用同一个缓冲区进行数据的交换new Thread(new Producer(buffer)).start();
new Thread(new Consumer(buffer)).start();
}
}
//生产者类,负责生产数据classProducerimplementsRunnable
{public BlockingQueue buffer;
public Producer(BlockingQueue buffer)
{
this.buffer = buffer;
}
@Override
publicvoid run()
{
for(int i = 1;i<11;i++)
{
try
{
System.out.println("Producer + :" + i);
buffer.put(i);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
//消费者类,负责消费数据classConsumerimplementsRunnable
{public BlockingQueue buffer;
public Consumer(BlockingQueue buffer)
{
this.buffer = buffer;
}
@Override
publicvoid run()
{
for(int i = 1;i < 11 ; i++)
{
try{
System.out.println("Consumer - :" + buffer.take());
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
关于生产者与消费者模式的几个使用场景:
- 使用线程池来实现生产者与消费者模式:例如,创建N个不同规模的线程池来处理不同性质的任务,比如线程池1负责将数据读到内存之后,交给线程池2里的线程继续处理压缩数据。线程池1主要处理IO密集型任务,线程池2主要处理CPU密集型任务。
- 上传附件并处理,用户把文件上传到系统后,系统把文件丢到队列里,然后立刻返回告诉用户上传成功,最后消费者再去队列里取出文件去处理等等。
生产者与消费者模式的好处:
- 简化开发,独立编写生产者和消费者,仅仅需要知道共享对象是谁。
- 生产者与消费者可以以不同的速度运行。
- 解耦合。
关于阻塞队列,请看这里。
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了 生产者与消费者模式,包括了方面的内容,希望对Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_3782301.html