多线程:生产者与消费者经典问题(马士兵)

来源:互联网 发布:中铁宝桥网络大学 编辑:程序博客网 时间:2024/06/12 18:55
package houy.qing.demo;public class ProducerSummer {    public static void main(String[] args) {        SyncStack ss = new SyncStack();        new Thread(new Producer(ss)).start();        new Thread(new Consumer(ss)).start();    }}class WoTo{    int id;    public WoTo(int id){        this.id = id;    }    public String toString() {        return "woto :" + id;    }}class SyncStack{    int index = 0;    WoTo[] arrWoTo = new WoTo[6];    public synchronized void push(WoTo wt){        while (index == arrWoTo.length) {            try {                System.out.println("系统当前时间:" + System.currentTimeMillis());                this.wait(5*1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }        System.out.println("系统当前时间:" + System.currentTimeMillis());        this.notify();        arrWoTo[index] = wt;        System.out.println("生产:"+ wt);        index++;    }    public synchronized WoTo pop(){        while (index == 0) {            try {                this.wait();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        this.notify();        index--;        return arrWoTo[index];    }       }class Producer implements Runnable{    SyncStack ss = null;    public Producer(SyncStack ss) {        this.ss = ss;    }    @Override    public void run() {        for (int i = 0; i < 20; i++) {            WoTo wt = new WoTo(i);            ss.push(wt);            try {                Thread.sleep((int)Math.random()*200);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}class Consumer implements Runnable{    SyncStack ss = null;    public Consumer(SyncStack ss) {        this.ss = ss;    }    @Override    public void run() {        for (int i = 0; i < 20; i++) {            WoTo wtTo = ss.pop();            System.out.println("消费:" + wtTo);            try {                Thread.sleep((int)Math.random()*1000);            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }}
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被对方追尾了对方只有交强险怎么办 摩托车行驶证年检过期一年半怎么办 户口迁到杭州了身份证掉了怎么办 户口已迁至外面要补办结婚证怎么办 汽车年检时间过了1个月怎么办 户口在老家在北京工作怎么办招工 报考驾照时手机号留错了怎么办 合肥驾照换证体检没过怎么办 驾驶证记分周期到了违章未消怎么办 驾照被扣科目一过期没考怎么办 驾驶证暂扣过了换证日期怎么办? 考驾照科目二身份证丢了怎么办 驾照科目一考试身份证丢了怎么办 换驾驶证名下有车辆脱审怎么办 交警把驾驶证和行车证扣了怎么办 连续两天驾照都是扣12分怎么办? 交警开的电动车罚单丢了怎么办 驾驶证b证体检报告拖期怎么办 在中国把美国护照弄丢了怎么办 拿了驾照两年了不敢上高速怎么办 我要移民过香港大陆的驾驶证怎么办 交警开的扣行驶证的单不见了怎么办 行驶证累计记分满12分后怎么办 行车证丢了被交警查到怎么办 手机摔了一下一半黑屏了怎么办 三星手机的显示屏插头坏了怎么办? 被普通的手机维修店骗了怎么办? 手机外屏裂了内屏进水了怎么办 小米2s手机忘了解锁图案怎么办 红米note5手机屏烂了怎么办 网上买好高铁票身份证没带怎么办 高铁票买好了身份证丢了怎么办 苏州园区社保卡丢了怎么办 大学办的社保卡丢了怎么办 毕业六年了大学社保卡丢了怎么办 医保卡丢了补办后卡里余额怎么办 银行卡丢了记不住卡号怎么办 哈尔滨医保卡挂失后又找到了怎么办 孩子在哈尔滨户口在外地医保怎么办 椒江二桥通行证被扣走了怎么办 住建委查到买房材料不真怎么办