sxhs2008 发表于 2013-2-1 11:55:22

生产者跟消费者(馒头)

public class ProduserandConsucer {    public static void main(String[] args) {      Stack sk = new Stack();      Producer p = new Producer(sk);      Cunsumer c = new Cunsumer(sk);      new Thread(p).start();      new Thread(c).start();    }}class WoTou{    int id;    WoTou(int id){      this.id = id;    }    public String toString(){      return "WoTou="+id;    }}class Stack{    int index = 0;    WoTou[] arrWT = new WoTou;       public synchronized void Push(WoTou wt){      while(index ==arrWT.length){            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }      }      this.notify();      arrWT = wt;      index ++;    }       public synchronized WoTou tack(){      while(index==0){            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }      }      this.notify();      index --;      return arrWT;    }}class Producer implements Runnable{    Stack sk = null;    Producer(Stack sk){      this.sk = sk;    }    @Override    public void run() {      for (int i = 0; i < 20; i++) {            WoTou wt = new WoTou(i);            sk.Push(wt);            System.out.println("生产了="+wt);                     try {                Thread.sleep((int)(Math.random()*2));            } catch (InterruptedException e) {                e.printStackTrace();            }      }    }   }class Cunsumer implements Runnable{    Stack sk = null;    public Cunsumer(Stack sk){      this.sk = sk;    }    @Override    public void run() {      for (int i = 0; i < 20; i++) {            WoTou wt = sk.tack();            System.out.println("消费了="+wt);                     try {                Thread.sleep((int)(Math.random()*1000));            } catch (InterruptedException e) {                e.printStackTrace();            }      }    }   }
页: [1]
查看完整版本: 生产者跟消费者(馒头)