1 什么是生产者消费者模型
简单来说,生产者向一块固定的空间生产资源,消费者消费这个空间的资源,具体过程如下:
- 生产者向一定大小的区域S生产资源,当S满时生产者阻塞
- 消费者从S中获取资源,当S为空时,消费者被阻塞
- 消费者在消费资源后会唤醒因S满而被阻塞的生产者
- 生产者在生产资源后会唤醒因S空而被阻塞的消费者
2 通过BlockingQueue实现生产者消费者模型
这是实现生产者消费者模型最简单的方法,代码如下
public static void main(String[] args) {
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
//生产任务
Runnable pro = () -> {
for (int i = 0; i < 100; i++) {
try {
queue.put(i);
System.out.println("生产者 " +
Thread.currentThread().getName() + " 生产了" + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("生产者线程 " + Thread.currentThread().getName() + " 结束");
};
//消费任务
Runnable con =