package cosu_pro.pc; import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; public class LinkBolckingQueuePC { public static void main(String[] args) { Storage storage = new Storage(); Consumer c = new Consumer(storage); Producer p = new Producer(storage); ExecutorService execuService = Executors.newCachedThreadPool(); execuService.submit(p); execuService.submit(c); } } // storage class Storage{ BlockingQueue<Integer> storage = new LinkedBlockingQueue<Integer>(10); public int push(int i){ storage.add(i); return i; } public int prop() throws InterruptedException{ return storage.take(); } } // consumer class Consumer implements Runnable{ private Storage storage = null; public Consumer(Storage s){ this.storage = s; } @Override public void run() { // TODO Auto-generated method stub while(true){ try { System.out.println("消费商品-----"+storage.prop()); Thread.yield(); Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class Producer implements Runnable{ private Storage storage = null; public Producer(Storage s){ this.storage = s; } @Override public void run() { // TODO Auto-generated method stub while(true){ System.out.println("生产商品----"+storage.push(new Random().nextInt(10))); try { Thread.yield(); Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }