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();
}
}