// SimplePool.java
package org.bson.util;
import java.util.*;
public abstract class SimplePool<T> {
public SimplePool( int max ){
_max = max;
}
public SimplePool(){
_max = 1000;
}
protected abstract T createNew();
protected boolean ok( T t ){
return true;
}
public T get(){
synchronized ( _stored ){
if ( _stored.size() > 0 )
return _stored.removeFirst();
}
return createNew();
}
public void done( T t ){
if ( ! ok( t ) )
return;
synchronized ( _stored ){
if ( _stored.size() > _max )
return;
_stored.addFirst( t );
}
}
final int _max;
private LinkedList<T> _stored = new LinkedList<T>();
}