iteratorpool.java

来自「java jdk 1.4的源码」· Java 代码 · 共 101 行

JAVA
101
字号
package org.apache.xpath.axes;import java.util.*;import org.apache.xml.dtm.DTMIterator;import org.apache.xml.utils.WrappedRuntimeException;/** * <meta name="usage" content="internal"/> * Pool of object of a given type to pick from to help memory usage */public class IteratorPool implements java.io.Serializable{  /** Type of objects in this pool.   *  @serial          */  private final DTMIterator m_orig;  /** Vector of given objects this points to.   *  @serial          */  private final Vector m_freeStack;  /**   * Constructor IteratorPool   *   * @param original The original iterator from which all others will be cloned.   */  public IteratorPool(DTMIterator original)  {    m_orig = original;    m_freeStack = new Vector();  }    /**   * Get an instance of the given object in this pool    *   * @return An instance of the given object   */  public synchronized DTMIterator getInstanceOrThrow()    throws CloneNotSupportedException  {    // Check if the pool is empty.    if (m_freeStack.isEmpty())    {      // Create a new object if so.      return (DTMIterator)m_orig.clone();    }    else    {      // Remove object from end of free pool.      DTMIterator result = (DTMIterator)m_freeStack.lastElement();      m_freeStack.setSize(m_freeStack.size() - 1);      return result;    }  }    /**   * Get an instance of the given object in this pool    *   * @return An instance of the given object   */  public synchronized DTMIterator getInstance()  {    // Check if the pool is empty.    if (m_freeStack.isEmpty())    {      // Create a new object if so.      try      {        return (DTMIterator)m_orig.clone();      }      catch (Exception ex)      {        throw new WrappedRuntimeException(ex);      }    }    else    {      // Remove object from end of free pool.      DTMIterator result = (DTMIterator)m_freeStack.lastElement();      m_freeStack.setSize(m_freeStack.size() - 1);      return result;    }  }  /**   * Add an instance of the given object to the pool     *   *   * @param obj Object to add.   */  public synchronized void freeInstance(DTMIterator obj)  {    m_freeStack.addElement(obj);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?