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

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

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

    關(guān)于生產(chǎn)者與消費(fèi)者之間的問題,其實(shí)在你準(zhǔn)確理解了線程的概念和方法的用法后,就很容易理解了。

    以下是偶寫的一個(gè)關(guān)于生產(chǎn)者與消費(fèi)者的程序,看看對你理解有沒有幫助。

    //生產(chǎn)者
     class Producer implements Runnable{
     private WOWOTou wwt=null;
     private Basket bs=null;
     private static int id=1;
     private static boolean state=true;
     
     Producer(Basket bs){
      this.bs=bs;
     }
     
     public  WOWOTou produce(){
      try {
       Thread.sleep( (long) (Math.random()*8000));
      } catch (InterruptedException e) {
       
       e.printStackTrace();
      }
      wwt=new WOWOTou(id);

      //輸出調(diào)試語句
      System.out.println();
      System.out.println(Thread.currentThread().getName()+"生產(chǎn)了id為"+id+"的包子");  

      id++;
      return wwt;
     }

     public void push(){
      bs.push(wwt);
      wwt=null;
     }
     
     public void run() {
     
      while(state){
       synchronized(this){
        produce();
        push();
       }
      
      }
      
     }
     
    }




    //消費(fèi)者
    class Custmer implements Runnable{
     
     private Basket bs=null;
     private WOWOTou wwt=null;
     private static boolean state=true;
     
     public Custmer(Basket bs) {
      this.bs = bs;
     }
     
      
     public  void cousme(){
      try{
       Thread.sleep((long) (Math.random()*8000));
      }catch(InterruptedException e){
       e.printStackTrace();
      }

      // 輸出調(diào)試語句
      System.out.println();
      System.out.println(Thread.currentThread().getName()+"消費(fèi)id為"+wwt.getWOWOTouID()+"的包子");  

      wwt=null;
      
     }

     public void pop(){
      wwt=bs.pop();
     }
     
     public void run() {
      while(state){
       synchronized(this){
        pop();
        cousme();
       }  
      }
      
     }


    }

     


    //裝WOWOTou的Basket
    class Basket{
     
     private int index=0;
     private  final static int max=5;
     private WOWOTou wwt=null;
     private WOWOTou[] wwtbs=new WOWOTou[5];
     private Producer p=null;
     private static Basket bs=null;
     
     private Basket(){}
     
     public synchronized static Basket getBasket(){
      if(bs==null)
       bs=new Basket();
      
      return bs;
     }
     
     
     public synchronized void  push(WOWOTou wwt){
      
      while(index==max){
       System.out.println("包子滿了,趕緊吃包子");
       try {
        this.wait();
       } catch (InterruptedException e) {    
        e.printStackTrace();
       }
      }
       this.notify();

     //輸出調(diào)試語句
       System.out.println();
       System.out.println("這是"+Thread.currentThread().getName()+"生產(chǎn)的id為"+wwt.getWOWOTouID()+"的包子");
       
      wwtbs[index++]=wwt;       
     }
     
     public synchronized WOWOTou pop(){
      while(index==0){
       System.out.println();
       System.out.println("沒包子了,趕緊生產(chǎn)包子");
       try{
        this.wait();
       }catch(InterruptedException e){
        e.printStackTrace();
       }
      }
       this.notify();
       if(index>0)
        index--;

      //輸出調(diào)試語句
       System.out.println();
       System.out.println(Thread.currentThread().getName()+"拿到id為"+wwtbs[index].getWOWOTouID()+"的包子"); 

      return wwtbs[index];
     }
    }

     


    class WOWOTou{
     
     private int id=0;
     
     WOWOTou(int id){
      this.id=id;
      
     }
     
     public int getWOWOTouID(){
      return id;
     }
    }



    當(dāng)你明白線程后,就應(yīng)該考慮多線程和線程的性能問題,盡量減小鎖的粒度,但要注意死鎖問題。
    posted on 2008-10-20 20:55 李威威 閱讀(441) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 国产免费黄色无码视频| 成年大片免费视频播放一级| 青柠影视在线观看免费| 国产专区一va亚洲v天堂| 韩国亚洲伊人久久综合影院| 国产成人高清精品免费鸭子 | 久久er国产精品免费观看2| 亚洲国产成人乱码精品女人久久久不卡 | 特级无码毛片免费视频尤物| 久久久久久a亚洲欧洲AV| 一级毛片免费不卡在线| 久久久久久久亚洲Av无码| 2021国内精品久久久久精免费| 亚洲欧洲另类春色校园小说| 国产v精品成人免费视频400条| 亚洲乱码一二三四五六区| 成人一a毛片免费视频| 国产成人亚洲毛片| 亚洲熟伦熟女新五十路熟妇| GOGOGO免费观看国语| 91精品国产亚洲爽啪在线观看| 蜜桃AV无码免费看永久| 亚洲乱色伦图片区小说 | 日韩精品无码免费专区网站| 国产亚洲精品国产| 91香焦国产线观看看免费| va天堂va亚洲va影视中文字幕| 国产在线ts人妖免费视频| 成人自慰女黄网站免费大全| 久久亚洲精品国产精品| 色视频色露露永久免费观看 | 亚洲伦理中文字幕| 亚洲国产成人五月综合网| 91麻豆国产免费观看| 亚洲av成人中文无码专区| 亚洲人成人网站在线观看| 日韩在线永久免费播放| 亚洲精华国产精华精华液好用| 自拍偷自拍亚洲精品情侣| 特级做A爰片毛片免费69| 一级片在线免费看|