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

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

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

    隨筆 - 1, 文章 - 0, 評論 - 5, 引用 - 0
    數(shù)據(jù)加載中……

    2009年12月10日

    Java對象池的簡單應(yīng)用

    Apache 的commons pool框架為我們提供了對象池封裝技術(shù),也就是大家說的緩存技術(shù),個人感覺還是不錯的。

    以下是一個簡單的例子,希望能夠起到拋磚引玉的作用,當(dāng)然如果要應(yīng)用到實際項目中的話,還需要完善很多內(nèi)容,比如對象池的參數(shù)配置、日志處理、異常解決。。。

    需要緩存的對象:
    public class Employee {
          
    static int counter=0;
          
    private String name;
          
    private int id;

          
    public Employee(String name) {
            
    this.name=name;
            
    this.id=++counter;
            System.out.println(name
    +" is created!");
          }


          
    public String getName() {
            
    return this.name;
          }


          
    public void setName(String name) {
            
    this.name = name;
          }


          
    public void doWork() {
            System.out.println(
    this.toString()+" do some thing");
          }


          
    public String toString() {
            
    return (" Name: " + this.name+",id:"+this.id);
          }


          
    public void finalize() {
            System.err.println(
    "Employee " + toString() + " made redundant");
          }

        }



    創(chuàng)建緩存對象工廠,由于框架提供了一個基本的BaseKeyedPoolableObjectFactoy創(chuàng)建工廠,可以直接繼承并實現(xiàn)makeObject方法,也就是創(chuàng)建緩存對象的具體實現(xiàn),當(dāng)然還有其他的創(chuàng)建工廠,這里就不具體講了,可以查看Apache的相關(guān)資料。
    import org.apache.commons.pool.BaseKeyedPoolableObjectFactory;

    public class EmployeeFactory extends BaseKeyedPoolableObjectFactory {

        @Override
        
    public Object makeObject(Object key) throws Exception {
            
    return new Employee((String)key);
        }


         
    }

    客戶端的調(diào)用例子,pool.addObject增加緩存對象,borrowObject從緩存中獲取對象,如果沒有則會創(chuàng)建一個新對象,returnObject釋放對象,即使用完對象后要釋放對象到緩存中。
    public class TestKeyedObjectPool {
        
    public static void main(String args[]) throws Exception {

            GenericKeyedObjectPool pool 
    = new GenericKeyedObjectPool();
            pool.setFactory(
    new EmployeeFactory());

            pool.addObject(
    "Peter");
            pool.addObject(
    "Jerry");
            pool.addObject(
    "Richard");
            pool.addObject(
    "Peter");

          System.out.println(
    "Number of Peter employees in pool: " +
              pool.getNumIdle(
    "Peter"+ " out of total employees: " +
              pool.getNumIdle());

            Employee employee 
    = (Employee)pool.borrowObject("Peter");
            employee.doWork();
            pool.returnObject(
    "Peter", employee);
            
          System.out.println(
    "Number of Peter employees in pool: " +
                      pool.getNumIdle(
    "Peter"+ " out of total employees: " +
                      pool.getNumIdle());
          }


    }


    運(yùn)行結(jié)果:
    Peter is created!
    Jerry is created
    !
    Richard is created
    !
    Peter is created
    !
    Number of Peter employees in pool: 
    2 out of total employees: 4
     Name: Peter,id:
    1 do some thing
    Number of Peter employees in pool: 
    2 out of total employees: 4

    posted @ 2009-12-10 17:50 伊布 閱讀(2025) | 評論 (5)編輯 收藏

    主站蜘蛛池模板: 亚洲国产精品第一区二区三区 | www.999精品视频观看免费| 亚洲色偷偷偷鲁综合| 亚洲av日韩av天堂影片精品| h在线看免费视频网站男男| 91香焦国产线观看看免费| 国产∨亚洲V天堂无码久久久| 黄色视频在线免费观看| 国产在线国偷精品产拍免费| 国产精品亚洲mnbav网站| 四虎影视久久久免费观看| 美女被免费喷白浆视频 | 豆国产96在线|亚洲| 国产一区二区三区在线观看免费| 亚洲av永久无码精品表情包| 亚洲中文字幕乱码一区| 成人免费视频一区二区三区| 亚洲av日韩aⅴ无码色老头| 亚洲欧洲国产成人综合在线观看| 亚洲一区在线视频观看| 福利免费在线观看| 亚洲成人在线网站| 中国在线观看免费国语版| 豆国产96在线|亚洲| 亚洲熟女一区二区三区| 97青青草原国产免费观看| 亚洲中文字幕无码久久精品1| 看成年女人免费午夜视频| 在线观看人成视频免费| 亚洲一区二区久久| 免费在线黄色网址| a级在线免费观看| 国产v亚洲v天堂a无| 99国产精品永久免费视频| 国产偷国产偷亚洲清高APP| 亚洲国产三级在线观看| 成年女人色毛片免费看| 国产美女视频免费观看的网站| 亚洲码在线中文在线观看| 免费无码又爽又刺激高潮视频| 国产精品亚洲精品|