package ecologylab.generic; public abstract class CappedResourcePool<T> extends ResourcePool<T> { private int maximumSize; protected CappedResourcePool(boolean instantiateResourcesInPool, int initialPoolSize, int minimumPoolSize, int maximumSize, boolean checkMultiRelease) { super(instantiateResourcesInPool, initialPoolSize, minimumPoolSize, checkMultiRelease); this.maximumSize = maximumSize; } @Override protected synchronized void onRelease(T resourceToRelease) { this.notify(); } @Override protected synchronized void onAcquire() { while(this.getPoolSize() == 0 && this.getCapacity() * 2 > maximumSize) { Debug.println("Waiting for pool to free up!"); try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }