<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)  編輯  收藏 所屬分類: 面試筆試相關的

    主站蜘蛛池模板: 免费看少妇高潮成人片| 成年大片免费视频播放一级| 花蝴蝶免费视频在线观看高清版| 免费在线黄色网址| 无码天堂亚洲国产AV| 日韩人妻无码免费视频一区二区三区 | 亚洲av最新在线网址| a级成人毛片免费图片| 亚洲产国偷V产偷V自拍色戒 | 国产成人亚洲综合在线| 免费人成在线观看播放国产| 猫咪免费观看人成网站在线| 亚洲人AV永久一区二区三区久久| 国产久爱免费精品视频| 人人狠狠综合久久亚洲婷婷| 久久久久久AV无码免费网站| 亚洲黄色网址大全| 亚洲成在人线aⅴ免费毛片| 亚洲AV无码国产精品永久一区| 亚洲国产香蕉人人爽成AV片久久| 一区二区三区免费视频网站| 亚洲乱码国产一区三区| 无码专区AAAAAA免费视频| 亚洲国产韩国一区二区| 最近中文字幕无吗高清免费视频| 国产综合成人亚洲区| 国产精品亚洲mnbav网站 | 国产在线一区二区综合免费视频| 中文字幕亚洲综合久久| 成年女人午夜毛片免费看| 边摸边吃奶边做爽免费视频网站| 亚洲精品中文字幕乱码三区| xxxx日本免费| 风间由美在线亚洲一区| 日本亚洲视频在线| 成人午夜性A级毛片免费| 日韩一区二区三区免费播放| 亚洲AV无码国产精品色午友在线| 性感美女视频在线观看免费精品 | 国产精品亚洲一区二区三区 | 亚洲日本在线电影|