<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)的

    主站蜘蛛池模板: 亚洲视频在线观看| 另类专区另类专区亚洲| 亚洲综合中文字幕无线码| WWW国产亚洲精品久久麻豆| 免费国产高清毛不卡片基地| 国产综合免费精品久久久| 国产免费的野战视频| 亚洲一区中文字幕在线观看| 亚洲欧美成人一区二区三区 | 亚洲大尺度无码专区尤物| 亚洲小说区图片区| 日本高清免费中文在线看| 99精品热线在线观看免费视频| 99久久免费精品国产72精品九九| 亚洲麻豆精品国偷自产在线91| 久久亚洲AV成人出白浆无码国产| 亚洲欧美日韩中文无线码| 中文字幕在线视频免费| 最新猫咪www免费人成| 亚洲日韩aⅴ在线视频| 亚洲日韩av无码中文| 大地资源中文在线观看免费版| 四虎影视免费在线| 亚洲AV无码乱码在线观看裸奔| 亚洲av日韩av永久在线观看| 亚洲一级视频在线观看| 一级做a爰片久久毛片免费看| 一色屋成人免费精品网站| 国产亚洲精品无码专区| 亚洲色大成WWW亚洲女子| 亚洲成人免费在线| 亚洲综合图色40p| 国产亚洲午夜精品| 亚洲一区二区免费视频| 精品亚洲一区二区| 无人视频在线观看免费播放影院| 在线v片免费观看视频| 亚洲一区中文字幕久久| 最近免费字幕中文大全| 亚洲国产精品综合久久网络| 亚洲精品GV天堂无码男同|