package com.nowcoder; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; /** * Created by Administrator on 2017/5/9. */ public class MyThread { class Producer implements Runnable{ private BlockingQueue<String> p; public Producer(BlockingQueue p){ this.p = p; } @Override public void run() { try { for (int i = 0; i < 10; i++){ Thread.sleep(1000); p.put(String.valueOf(i)); } }catch (Exception e){ e.printStackTrace(); } } } class Consumer implements Runnable{ private BlockingQueue<String> c; public Consumer(BlockingQueue c){ this.c = c; } @Override public void run() { while (true){ try { System.out.println(Thread.currentThread().getName() +":" + c.take()); } catch (InterruptedException e) { e.printStackTrace(); } } } } public void testBlockingQueue(){ BlockingQueue<String> blockingQueue = new ArrayBlockingQueue<String>(10); new Thread(new Producer(blockingQueue)).start(); new Thread(new Consumer(blockingQueue), "consumer1").start(); new Thread(new Consumer(blockingQueue), "consumer2").start(); } public static void main(String[] args){ new MyThread().testBlockingQueue(); } }