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

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

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

    我思故我強(qiáng)

    多線程-生產(chǎn)者消費(fèi)者

     

    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) {
      // 生產(chǎn)
      while (counter == stackSize) {
       // 已經(jīng)滿了 等待消費(fèi)
       System.out.println("已經(jīng)存滿!等待消費(fèi)。。。。。");
       try {
        this.wait();
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
      this.notify();
      things[counter] = thing;
      counter++;
     }

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

    class Producer implements Runnable {
     Stack stack;
     int level;// 生產(chǎn)水平

     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("生產(chǎn): " + thing.id);
       try {
        Thread.sleep(100);
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     }
    }

    class Consumer implements Runnable {
     Stack stack;
     int level;// 消費(fèi)水平

     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("消費(fèi): " + 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);
      // 存儲(chǔ)量為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) 評(píng)論(0)  編輯  收藏 所屬分類: 面試筆試相關(guān)的

    主站蜘蛛池模板: 亚洲福利在线播放| 青草草在线视频永久免费| 亚洲人成中文字幕在线观看| 国产亚洲视频在线播放大全| 青青青青青青久久久免费观看| 亚洲色偷偷色噜噜狠狠99| 免费被黄网站在观看| 亚洲日韩一区二区三区| 成全视频免费高清| 亚洲av成本人无码网站| 国产jizzjizz免费视频| 九九全国免费视频| 亚洲人成在线播放网站| 91成人在线免费视频| 亚洲资源最新版在线观看| 在线看片人成视频免费无遮挡| 亚洲国产成人久久一区二区三区| 超pen个人视频国产免费观看| 曰批免费视频播放免费| 亚洲视频在线一区二区| 黄网站色视频免费在线观看的a站最新| 亚洲国产精品一区第二页| 95免费观看体验区视频| 亚洲另类古典武侠| 国产免费131美女视频| 香蕉免费看一区二区三区| 亚洲福利一区二区精品秒拍| 日韩视频免费一区二区三区| 国产精品无码免费专区午夜 | 亚洲国产精品无码久久98| 免费国产不卡午夜福在线 | 亚洲人成黄网在线观看| 国产午夜免费福利红片| 男人天堂免费视频| 亚洲欧洲日韩极速播放| 亚洲乱码国产一区网址| 24小时日本电影免费看| 老司机午夜精品视频在线观看免费| 亚洲产国偷V产偷V自拍色戒 | 亚洲国产日韩精品| 亚洲精品国产日韩无码AV永久免费网|