隨筆-348  評論-598  文章-0  trackbacks-0
          package com.gcoresoft.homework.consumerproducer;

          public class Test {

              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  Products pros=new Products();
                  
                  Producers[] producers
          =new Producers[5];
                  
          for(int i=0;i<producers.length;i++)
                  
          {
                      producers[i]
          =new Producers(pros, i, 5);
                  }

                  
                  Consumers[] consumers
          =new Consumers[2];
                  
          for(int i=0;i<consumers.length;i++)
                  
          {
                      consumers[i]
          =new Consumers(pros, i);
                  }

                  
                  
          for(int i=0;i<producers.length;i++)
                  
          {
                      producers[i].start();
                  }

                  
                  
          for(int i=0;i<consumers.length;i++)
                  
          {
                      consumers[i].start();
                  }
                  
              }


          }

          消費者
          package com.gcoresoft.homework.consumerproducer;

          public class Consumers extends Thread{

              
          private final int ID;
              
          private Products pros;
              
              
              
          public Consumers(Products pros, int ID)
              
          {
                  
          this.ID=ID;
                  setProducts(pros);
              }

              
              
          public void setProducts(Products pros)
              
          {
                  
          this.pros=pros;
              }

              
              
          public void run()
              
          {
                  
          for(int i=0;i<100;i++)
                  
          {
                      System.out.println(
          "Consumer "+ ID +"消費了"+pros.get());
                      
          try
                      
          {
                          sleep((
          int)(Math.random()*2000));
                      }
          catch(Exception e){
                          
          //e.printStackTrace();
                          System.out.println("Exception in Consumer "+ID);
                      }

                  }

              }

          }


          生產(chǎn)者
          package com.gcoresoft.homework.consumerproducer;

          public class Producers extends Thread {

              
          private Products pros;
              
          private final int ID;
              
          private int num=0;
              
              
          public Producers(Products pros, int ID, int num)
              
          {    
                  
          this.ID=ID;
                  setProductsNum(num);
                  setProducts(pros);
              }

              
              
          public void setProducts(Products pros)
              
          {
                  
          this.pros=pros;
              }


              
          public void setProductsNum(int num)
              
          {
                  
          this.num=num;
              }

              
              
          public void run()
              
          {
                  
          for(int i=0;i<num;i++)
                  
          {
                      pros.add(ID
          *10+i);
                      System.out.println(
          "Producer "+ ID +"生產(chǎn)了"+(ID*10+i));
                      
          try
                      
          {
                          sleep((
          int)(Math.random()*2000));
                      }
          catch(Exception e){
                          
          //e.printStackTrace();
                          System.out.println("Exception in Producer "+ID);
                      }

                  }

              }

              
              
          }


          產(chǎn)品
          package com.gcoresoft.homework.consumerproducer;

          public class Products {

              
          private static int count;
              
          private static int num;
              
          private static int[] products;
              
              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  Products pros=new Products(200);
                  
          for(int i=0;i<1000;i++)
                      pros.add(i);
                  
          for(int i=0;i<200;i++)
                      System.out.println(
          "get:"+pros.get());
              }

              
              
          public Products()
              
          {
                  setMaxNum(
          100);
              }

              
              
          public Products(int num)
              
          {
                  setMaxNum(num);
              }

              
              
          public void setMaxNum(int num)
              
          {
                  
          this.num=num;
                  products
          =new int[num];
                  count
          =0;
              }
              

              
          public synchronized void add(int i)
              
          {
                  
          while(isFull())
                      
          try {
                          wait();
                      }
           catch (InterruptedException e) {
                          
          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }

                  products[count
          ++]=i;
                  
          //System.out.println("count:"+(count-1));
                  notify();
              }

              
              
          private boolean isFull()
              
          {
                  
          return count==num;
              }

              
              
          public synchronized int get()
              
          {
                  
          while(isEmpty())
                      
          try {
                          wait();
                      }
           catch (InterruptedException e) {
                          
          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }

                  notify();
                  
          //System.out.println("count:"+count);
                  return products[--count];
              }

              
              
          private boolean isEmpty()
              
          {
                  
          return count==0;
              }

              

          }


          測試


          ---------------------------------------------------------
          專注移動開發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2007-04-12 14:51 TiGERTiAN 閱讀(915) 評論(0)  編輯  收藏 所屬分類: Java
          專注移動開發(fā)--Windows Mobile, Android, iPhone, J2ME, BlackBerry, Symbian, Windows Phone

          慢慢混,慢慢學(xué)
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(43)

          隨筆分類(402)

          隨筆檔案(306)

          相冊

          我的好友們

          搜索

          •  

          積分與排名

          • 積分 - 812259
          • 排名 - 50

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 茂名市| 长阳| 淅川县| 屯昌县| 土默特左旗| 龙井市| 安徽省| 大关县| 盐城市| 西峡县| 兰西县| 宝清县| 连南| 车致| 镇安县| 新闻| 娱乐| 长顺县| 鄄城县| 杭锦后旗| 棋牌| 长汀县| 阿图什市| 息烽县| 凤阳县| 同德县| 湖口县| 深圳市| 抚宁县| 化德县| 凌云县| 安西县| 寿阳县| 桂东县| 梧州市| 南召县| 诸暨市| 凤城市| 邢台市| 璧山县| 婺源县|