001package org.maltparser.core.pool;
002
003import org.maltparser.core.exception.MaltChainedException;
004
005public 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}