    001    package org.maltparser.core.pool;
    002
    003    import org.maltparser.core.exception.MaltChainedException;
    004
    005    public abstract class ObjectPool<T> {
    006            protected int keepThreshold;
    007
    008            public ObjectPool() {
    009                    this(Integer.MAX_VALUE);
    010            }
    011
    012            public ObjectPool(int keepThreshold) {
    013                    setKeepThreshold(keepThreshold);
    014            }
    015
    016            public int getKeepThreshold() {
    017                    return keepThreshold;
    018            }
    019
    020            public void setKeepThreshold(int keepThreshold) {
    021                    this.keepThreshold = keepThreshold;
    022            }
    023
    024            protected abstract T create() throws MaltChainedException;
    025            public abstract void resetObject(T o) throws MaltChainedException;
    026            public abstract T checkOut() throws MaltChainedException;
    027            public abstract void checkIn(T o) throws MaltChainedException;
    028            public abstract void checkInAll() throws MaltChainedException;
    029    }