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 + -
显示快捷键?