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

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

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

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

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

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

      //輸出調試語句
      System.out.println();
      System.out.println(Thread.currentThread().getName()+"生產了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();
      }

      // 輸出調試語句
      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();

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

      //輸出調試語句
       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;
     }
    }



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

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


    網站導航:
     
     
    主站蜘蛛池模板: 亚洲AV成人片色在线观看高潮 | 亚洲网站在线免费观看| 亚洲18在线天美| 美女被暴羞羞免费视频| 免费精品无码AV片在线观看| 日本最新免费不卡二区在线| 亚洲国产精品久久久久婷婷老年| 黄网站色成年片大免费高清| 四虎免费影院4hu永久免费| 亚洲国产成人精品青青草原| baoyu777永久免费视频| 国产成人精品免费视频大全五级| 4480yy私人影院亚洲| 久久精品免费大片国产大片| 免费无码又爽又刺激高潮| 久久精品亚洲中文字幕无码麻豆| 一级一级一级毛片免费毛片| 四虎成人精品一区二区免费网站| 亚洲精品在线播放| 国产92成人精品视频免费| 亚洲精品无码午夜福利中文字幕| 亚洲人成电影网站色| 成人免费在线看片| 国产国拍亚洲精品mv在线观看 | 一本天堂ⅴ无码亚洲道久久| 亚洲a一级免费视频| 久久亚洲国产精品一区二区| 91精品国产免费入口| 亚洲AV无码1区2区久久| 亚洲一级毛片免费观看| 亚洲av无码专区在线电影| 精品国产免费观看| 中文永久免费观看网站| 亚洲综合另类小说色区| 九九免费观看全部免费视频| 亚洲国产精品久久久久久| 免费黄色一级毛片| 日韩视频在线观看免费| 亚洲AV人人澡人人爽人人夜夜| 最近中文字幕无吗高清免费视频| 亚洲一区电影在线观看|