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

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

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

    憨厚生

    ----Java's Slave----
    ***Java's Host***

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks
    業余時間寫了有關對象池方面的程序,不足之處請大家指出:
    1)要放如到對象池中的對象類
    package com.test;

    import java.util.*;

    public class TestObject {
      private String ID;
      
      private String name;
      
      private boolean isUsed = false;
      
      private long firstDate = System.currentTimeMillis();
      
      public void handle() {// 業務操作 ?????
      }
      
      public long getFirstDate() {
        return firstDate;
      }
      
      public void setFirstDate(long firstDate) {
        this.firstDate = firstDate;
      }
      
      public boolean isUsed() {
        return isUsed;
      }
      
      public void setUsed(boolean isUsed) {
        this.isUsed = isUsed;
      }
      
      public String getName() {
        return name;
      }
      
      public void setName(String name) {
        this.name = name;
      }
      
      public String getID() {
        return ID;
      }
      
      public void setID(String id) {
        ID = id;
      }
      
      public boolean close() {
       this.setFirstDate(System.currentTimeMillis());
        this.setUsed(false);
        return true;
      }
    }
    2)對象池類
    package com.test;

    import java.util.*;

    ;

    public class Factory {
      private static Factory factory;
      
      private static int minimum = 4;// 對象池中最少有4個對象
      //暫時沒有寫對象池初始化的時候自動生成4個相關對象
      private static int maximum = 10;// 對象池中最多有10個對象
      
      private static Collection data = new Vector();
      static {
        TestObject testObject = new TestObject();
        /*
    * for (int i = 0; i < minimum; i++) { testObject.setID("0" + new IntegerLight Bulb.toString());
    * testObject.setName("01" + new IntegerLight Bulb.toString()); data.add(testObject); }
    */
        testObject.setID("01");
        testObject.setName("011");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("02");
        testObject.setName("021");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("03");
        testObject.setName("031");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("04");
        testObject.setName("041");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("05");
        testObject.setName("051");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("06");
        testObject.setName("061");
        data.add(testObject);
        testObject = new TestObject();
        testObject.setID("07");
        testObject.setName("071");
        data.add(testObject);
      }
      
      private Factory() {
        
      }
      
      public static synchronized Factory creatFactoryPool() {
        if (factory == null)
          factory = new Factory();
        return factory;
      }
      
      public TestObject getObject(String id) {
        /*
    * 通過ID來查找對象
    */
        Iterator iterator = getIterator();
        TestObject object = null;
        int i = 0;
        while (iterator.hasNext()) {
          object = (TestObject) iterator.next();
          if (id.equals(object.getID())) {
            i = 1;
            /*
    * 當返回池中對象時,對象的下面2個屬性值做相映的變化
    */
            object.setFirstDate(System.currentTimeMillis());
            object.setUsed(true);
            break;
          }
        }
        if (i == 1) {
          return object;
        } else {
          System.out.println("ID=" + id + "對象不存在!");
          return null;
        }
      }
      
      public TestObject getObject() {
        /*
    * 獲取池中對象,如池中沒有多余對象可供選擇,即返回一新建對象.
    * 如池中對象數目沒有達到最大值,就把此對象添加池中.
    */
        Iterator iterator = getIterator();
        TestObject object = null;
        int i = 0;
        while (iterator.hasNext()) {
          object = (TestObject) iterator.next();
          if (object.isUsed() == false) {
            i = 1;
            object.setFirstDate(System.currentTimeMillis());
            object.setUsed(true);
            break;
          }
        }
        if (i == 1) {// 得到要查找的對象
          return object;
        }
        if (data.size() < maximum) {
          System.out.println("返回新建對象,添加池中!");
          object = new TestObject();
          object.setUsed(true);
          data.add(object);
          return object;
        } else {
          System.out.println("返回新建對象!");
          return new TestObject();
        }
      }
      
      public boolean deleteObject(String id) {
        /*
    * 根據對象ID來刪除對象.成功返回true,失敗返回false
    */
        Iterator iterator = getIterator();
        TestObject object = null;
        int i = 0;
        while (iterator.hasNext()) {
          if (object.getID().equals(id)) {
            iterator.remove();
            i = 1;
            break;
          }
        }
        if (i == 0) {
          System.out.println("ID=" + id + "被刪除對象不存在!");
          return false;
        } else {
          System.out.println("刪除對象成功!");
          return true;
        }
        
      }
      
      public boolean addObject(TestObject Object) {
        return data.add(Object);
        
      }
      
      public void objectManage() {
        /*
         * 池對象在獲取對象時候,都會執行此方法.如果有對象超過30分鐘沒有使用,
         * 就把此對象isUsed屬性值改成false
         */
        long interval = 30 * 60 * 1000;// 30分鐘
        Iterator iterator = data.iterator();
        TestObject object = null;
        long currentTime = System.currentTimeMillis();
        while (iterator.hasNext()) {
          object = (TestObject) iterator.next();
          if (object.isUsed() == false)
            continue;
          if (currentTime - object.getFirstDate() >= interval) {
            object.setUsed(false);
          }
        }
      }
      
      public Collection getData() {
        return data;
      }
      
      public Iterator getIterator() {
        objectManage();
        return data.iterator();
      }
      
    }
    Factory類提供了獲取對象的相關方法,程序還有不少要改進的地方,貼出來讓大家提出改進的意見!
    posted on 2007-05-10 23:03 二胡 閱讀(132) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 国产成人亚洲毛片| 亚洲AV无码男人的天堂| 中国毛片免费观看| 中文字幕亚洲电影| 搡女人免费免费视频观看| 在线亚洲97se亚洲综合在线| 又大又硬又粗又黄的视频免费看| 亚洲精品成人区在线观看| yellow视频免费看| 国产亚洲人成网站在线观看不卡| 免费看男人j放进女人j免费看| 亚洲AV无码一区二区二三区入口 | 性色av无码免费一区二区三区| 亚洲成a人不卡在线观看| 成人免费a级毛片| 老司机精品视频免费| 亚洲综合精品网站在线观看| 精品免费视在线观看| 亚洲综合国产精品| 永久免费的网站在线观看| 亚洲人成网站999久久久综合| 免费一级毛片免费播放| 野花香高清视频在线观看免费| 99久久精品国产亚洲| 国产麻豆免费观看91| 中文字幕在线免费播放| 亚洲国产亚洲片在线观看播放 | 免费一级做a爰片久久毛片潮喷| 一级毛片不卡免费看老司机| 亚洲av无码一区二区三区乱子伦| 最近免费视频中文字幕大全| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲精品色婷婷在线影院 | 在线观看免费a∨网站| 成年网站免费入口在线观看| 亚洲黄色一级毛片| 免费在线观看黄网站| 91成人免费观看| 99re这里有免费视频精品| 亚洲人成色在线观看| 亚洲精品无码永久中文字幕|