public class PC { public static void main(String[] args) { BlockingQueue<Integer> bq = new ArrayBlockingQueue<Integer>(5); for(int i = 0 ;i < 4 ; i ++){ new Thread(new Productor(bq)).start(); new Thread(new Consumer(bq)).start(); } } }
package com._ThreadPool._3; import java.util.Random; import java.util.concurrent.BlockingQueue; public class Productor implements Runnable{ private BlockingQueue<Integer> bq; public Productor(BlockingQueue<Integer> bq){ this.bq = bq; } @Override public void run() { int i = 0 ; while(true){ try { Thread.sleep(new Random().nextInt(5000)); bq.put(i); System.out.println("队列中放入" + i + "队列中还有" + bq.size() + "个元素"); i++; } catch (InterruptedException e) { e.printStackTrace(); } } } }
package com._ThreadPool._3; import java.util.Random; import java.util.concurrent.BlockingQueue; public class Consumer implements Runnable{ private BlockingQueue<Integer> bq; public Consumer(BlockingQueue<Integer> bq){ this.bq = bq; } @Override public void run() { while(true){ try { Thread.sleep(new Random().nextInt(5000)); Integer integer = bq.take(); System.out.println("取出了" + integer +",队列里面还有" + bq.size() + "个"); } catch (InterruptedException e) { e.printStackTrace(); } } } }