熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java程序性能優化-對象復用“池”(4)[1]

2013-11-23 20:00:26  來源: Java高級技術 

    對象復用

  SoftReferenceObjectPool:它使用ArrayList保存對象但是SoftReferenceObjectPool並不直接保存對象的強引用而是保存對象的軟引用它使用如下方法向池中加入新對象

  _pooladd(new SoftReference<T>(obj refQueue))

  SoftReferenceObjectPool對對象的數量沒有限制當對象池沒有可用對象時borrowObject()方法會創建新的對象當內存緊張時JVM可以自動回收具有軟引用的對象

  以下代碼顯示了一個簡單的對象池工廠

  public class PoolableObjectFactoryDemo implements PoolableObjectFactory {

  private static  AtomicInteger counter = new AtomicInteger(

  public Object makeObject() throws Exception {   //創建對象

  Object obj = StringvalueOf(countergetAndIncrement())

  Systemoutprintln(Create Object + obj)

  return obj;

  }

  public void activateObject(Object obj) throws Exception {

  Systemoutprintln(Before borrow + obj)//在取出前被調用

  }

  public void passivateObject(Object obj) throws Exception {

  Systemoutprintln(return +obj)          //當對象返回池中時被調用

  }

  public boolean validateObject(Object obj) {

  return true;

  }

  public void destroyObject(Object obj) throws Exception {

  Systemoutprintln(Destroying Object + obj)

  }

  }

  對象池的使用例子如下

[]  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27795.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.