BlockingQueue阻塞队列的例子
package com.test;import java.util.Random;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class BlockingQueueTest{/** * @param args */public static void main(String[] args){ExecutorService pool = Executors.newCachedThreadPool();final BlockingQueue bq = new ArrayBlockingQueue(3);for (int i = 0; i < 2; i++){pool.execute(new Runnable(){public void run(){try{while (true){Thread.sleep(new Random().nextInt(1000));System.out.println(Thread.currentThread().getName()+ "准备放数据");bq.put(1);System.out.println(Thread.currentThread().getName()+ "已经放完数据,目前队列有"+bq.size()+"个数据");}}catch (InterruptedException e){e.printStackTrace();}}});}pool.execute(new Runnable(){public void run(){try{while (true){Thread.sleep(100);System.out.println(Thread.currentThread().getName()+ "准备取数据");bq.take();System.out.println(Thread.currentThread().getName()+ "已经取走数据,目前队列有"+bq.size()+"个数据");}}catch (InterruptedException e){e.printStackTrace();}}});}}