<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我思故我強

    多線程-生產者消費者

     

    package test;

    class Thing {
     int id;

     public Thing(int id) {
      this.id = id;
     }
    }

    class Stack {
     int counter = 0;
     int stackSize;
     Thing[] things = null;

     public Stack(int stackSize) {
      this.stackSize = stackSize;
      things = new Thing[stackSize];
     }

     public synchronized void push(Thing thing) {
      // 生產
      while (counter == stackSize) {
       // 已經滿了 等待消費
       System.out.println("已經存滿!等待消費。。。。。");
       try {
        this.wait();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
      this.notify();
      things[counter] = thing;
      counter++;
     }

     public synchronized Thing pop() {
      // 消費
      while (counter == 0) {
       System.out.println("沒有產品!等待生產。。。。");
       try {
        this.wait();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
      this.notify();
      counter--;
      return things[counter];
     }
    }

    class Producer implements Runnable {
     Stack stack;
     int level;// 生產水平

     public Producer(Stack stack, int level) {
      this.stack = stack;
      this.level = level;
     }

     public void run() {
      for (int i = 0; i <= level; i++) {
       Thing thing = new Thing(i);
       stack.push(thing);
       System.out.println("生產: " + thing.id);
       try {
        Thread.sleep(100);
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }
    }

    class Consumer implements Runnable {
     Stack stack;
     int level;// 消費水平

     public Consumer(Stack stack, int level) {
      this.stack = stack;
      this.level = level;
     }

     public void run() {
      for (int i = 0; i <= level; i++) {
       Thing thing = stack.pop();
       System.out.println("消費: " + thing.id);
       try {
        Thread.sleep(800);
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }
    }

    public class ProducterConsumer {
     public static void main(String[] args) {
      int stackSize = 5;

      Stack stack = new Stack(stackSize);
      // 存儲量為5的容器
      Producer p = new Producer(stack, 10);
      Consumer c = new Consumer(stack, 10);
      new Thread(p).start();
      new Thread(c).start();
     }
    }

    posted on 2009-10-12 17:31 李云澤 閱讀(141) 評論(0)  編輯  收藏 所屬分類: 面試筆試相關的

    主站蜘蛛池模板: 黄网站色在线视频免费观看| 国产成人亚洲综合无| 亚欧免费无码aⅴ在线观看| 亚洲一区二区三区乱码A| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 4444www免费看| 亚洲视频在线不卡| 亚洲成人免费电影| 亚洲日本va在线观看| 国内自产少妇自拍区免费| 极品色天使在线婷婷天堂亚洲| 国产在线a不卡免费视频| 一个人免费观看日本www视频| 91麻豆精品国产自产在线观看亚洲 | 免费a级毛片大学生免费观看| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 国产成人综合亚洲一区| 亚洲国产成人VA在线观看| 国产一级婬片A视频免费观看| 亚洲国产国产综合一区首页| 国产成人yy免费视频| 亚洲免费网站观看视频| 亚洲男人av香蕉爽爽爽爽| 国产一区二区免费视频| 亚洲成人网在线播放| 女性无套免费网站在线看| 日本高清不卡中文字幕免费| 亚洲国产精品久久久天堂| 日韩国产免费一区二区三区| 亚洲av永久无码| 亚洲熟妇少妇任你躁在线观看无码| 免费无码作爱视频| 亚洲中文字幕久久无码| 久久久久久A亚洲欧洲AV冫| 一区二区在线免费观看| 亚洲欧美日韩久久精品| 亚洲AV永久青草无码精品| 久久精品a一国产成人免费网站| 一级全免费视频播放| 亚洲乱码一二三四区麻豆| 亚洲综合精品网站|