欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

用阻塞队列解决生产者、消费者问题,队列生产者,package cn.i

来源: javaer 分享于  点击 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
相关栏目:

用户点评