经典笔试题:基于阻塞队列实现的简单生产者消费者模式
基于阻塞队列实现的简单生产者消费者模式,代码如下:
public class BlockingQueue_Test { private static final int MAX_CAPACITY = 10; private static ArrayBlockingQueue<Object> goods = new ArrayBlockingQueue<Object>(MAX_CAPACITY); public static void main(String[] args) { (new ProducerThread()).start(); (new ConsumerThread()).start(); } static class ProducerThread extends Thread { public void run() { while (true) { // 每隔 1000 毫秒生产一个商品 try { Thread.sleep(1000); goods.put(new Object()); System.out.println("Produce goods, total: " + goods.size()); } catch (InterruptedException e) { } } } } static class ConsumerThread extends Thread { public void run() { while (true) { // 每隔 5000 毫秒消费一个商品 try { Thread.sleep(5000); goods.take(); System.out.println("Consume goods, total: " + goods.size()); } catch (InterruptedException e) { } } } } }
运行结果如下:
Produce goods, total: 1
Produce goods, total: 2
Produce goods, total: 3
Produce goods, total: 4
Consume goods, total: 3
Produce goods, total: 4
Produce goods, total: 5
Produce goods, total: 6
Produce goods, total: 7
Produce goods, total: 8
Consume goods, total: 7
Produce goods, total: 8
Produce goods, total: 9
Produce goods, total: 10
Consume goods, total: 9
Produce goods, total: 10
Consume goods, total: 9
Produce goods, total: 10