public class ProducerConsumer {public static void main (String []args){ SycStack ss=new SycStack(); Producer p=new Producer(ss); Consumer c=new Consumer(ss); new Thread(p).start(); new Thread(c).start();}}class Wotou{ int id=0; public Wotou(int id){ this.id=id; } public String toString (){ return "Wotou :"+id; }}class SycStack{ int index=0; Wotou [] arrWotou=new Wotou[6]; public synchronized void push(Wotou wt){ while(index==arrWotou.length){ try{this.wait(); }catch(InterruptedException e){ e.printStackTrace(); } }this.notify(); arrWotou[index]=wt; index++; } public synchronized Wotou pop(){ while(index==0){ try { this.wait(); }catch(InterruptedException e){ e.printStackTrace(); } }this.notify(); index--; return arrWotou[index]; }}class Producer implements Runnable{ SycStack ss=null; Producer (SycStack ss){ this.ss=ss; } public void run(){ for(int i=0;i<20;i++){ Wotou wt =new Wotou(i); ss.push(wt); System.out.println("生产了:"+wt); try{ Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } } }}class Consumer implements Runnable{ SycStack ss=null;Consumer (SycStack ss){ this.ss=ss; } public void run(){ for(int i=0;i<20;i++){ Wotou wt =ss.pop(); System.out.println("消费了:"+wt); try{ Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } } }}