用阻塞队列解决生产者、消费者问题,队列生产者,package cn.i
分享于 点击 36798 次 点评:127
用阻塞队列解决生产者、消费者问题,队列生产者,package cn.i
package cn.itcast.gz;import java.util.Random;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class ProducerConsumerTest { private final static BlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<Integer>(3); public static void main(String[] args) { Producer5 producer = new Producer5(blockingQueue); Consumer5 consumer = new Consumer5(blockingQueue); Thread t1 = new Thread(producer); Thread t2 = new Thread(producer); Thread t3 = new Thread(consumer); Thread t4 = new Thread(consumer); t1.start(); t2.start(); t3.start(); t4.start(); }}class Producer5 implements Runnable{ private BlockingQueue<Integer> blockingQueue; public Producer5(BlockingQueue<Integer> blockingQueue) { this.blockingQueue = blockingQueue; } @Override public void run() { while(true) { try { int value = new Random().nextInt(10); System.out.println("正在准备放数据 "+value); Thread.sleep(new Random().nextInt(10)*100); blockingQueue.put(value); } catch (InterruptedException e) { e.printStackTrace(); } } }}class Consumer5 implements Runnable{ private BlockingQueue<Integer> blockingQueue; public Consumer5(BlockingQueue<Integer> blockingQueue) { this.blockingQueue = blockingQueue; } @Override public void run() { while(true) { try { System.out.println("正在准备取数据 "); Thread.sleep(new Random().nextInt(10)*1000); System.out.println("取到的数据 " +blockingQueue.take()); } catch (InterruptedException e) { e.printStackTrace(); } } }}//该片段来自于http://byrx.net
用户点评