package org.holoeverywhere.util;
public class SynchronizedPool<T extends Poolable<T>> implements Pool<T> {
private final Object mLock;
private final Pool<T> mPool;
public SynchronizedPool(Pool<T> pool) {
mPool = pool;
mLock = this;
}
public SynchronizedPool(Pool<T> pool, Object lock) {
mPool = pool;
mLock = lock;
}
@Override
public T acquire() {
synchronized (mLock) {
return mPool.acquire();
}
}
@Override
public void release(T element) {
synchronized (mLock) {
mPool.release(element);
}
}
}