读书人

生产者和消费者(馒头)

发布时间: 2012-12-19 14:13:14 作者: rapoo

生产者跟消费者(馒头)

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[6];       public synchronized void Push(WoTou wt){        while(index ==arrWT.length){            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        this.notify();        arrWT[index] = wt;        index ++;    }       public synchronized WoTou tack(){        while(index==0){            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        this.notify();        index --;        return arrWT[index];    }}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();            }        }    }   }
?

读书人网 >编程

热点推荐