LinkedBlockingQueue是由链表组成的阻塞队列,先来看demo
public class LinkedBlockingQueueDemo {
public static void main(String[] args) {
ExecutorService es = Executors.newCachedThreadPool();
BlockingQueue<Bread> queue = new LinkedBlockingQueue<Bread>(10);
for(int i = 0; i < 2; i++){
es.execute(new Baker(queue));
}
for(int i = 0; i < 10; i++){
es.execute(new BreadConsumer(queue));
}
es.shutdown();
}
}
class Baker implements Runnable{
private static int no = 0;
private int id = ++no;
private int count = 0;
private BlockingQueue<Bread> queue;
public Baker(BlockingQueue<Bread> queue){
this.queue = queue;
}
@Override
public void run() {
for(int i = 0; i < 10; i++){
System.out.println("面包师" + id + "正准备做第" + ++count + "面包");
Bread bread =