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

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

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

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

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

    //生產(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();
       }
      
      }
      
     }
     
    }




    //消費者
    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()+"消費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;
     }
    }



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

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


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 亚洲国产中文v高清在线观看| 成人免费无码视频在线网站| 亚洲五月午夜免费在线视频| 国产亚洲精品91| 亚洲AⅤ永久无码精品AA | 日本免费网址大全在线观看| 91亚洲国产成人精品下载| 91青青国产在线观看免费| 亚洲a级在线观看| 成人永久免费高清| 一个人看的hd免费视频| 亚洲精品无码不卡在线播放HE| 久久er国产精品免费观看2| 亚洲乱亚洲乱淫久久| 国产2021精品视频免费播放| 亚洲色图激情文学| 国产免费人成视频在线观看 | 波多野结衣免费在线| 亚洲日韩精品无码专区| 日韩亚洲精品福利| a在线观看免费网址大全| 亚洲黄网在线观看| 成人午夜18免费看| 一区二区3区免费视频| 久久国产亚洲高清观看| 成年性生交大片免费看| 永久免费无码日韩视频| 久久水蜜桃亚洲av无码精品麻豆| 无码国产精品久久一区免费| 美女一级毛片免费观看| 亚洲欧洲一区二区| 国产精品免费综合一区视频| 美女被免费网站91色| 亚洲图片中文字幕| 亚洲美日韩Av中文字幕无码久久久妻妇| 成在人线av无码免费高潮喷水| 亚洲国产精品日韩在线观看| 亚洲成a人片在线观看日本麻豆| 亚洲视频免费在线观看| 国产亚洲午夜精品| 久久精品九九亚洲精品|