#108 Consistent package naming throughout the examples

This commit is contained in:
Ilkka Seppala
2015-07-24 11:32:22 +03:00
parent af92d8dde5
commit 3d488ec15a
128 changed files with 963 additions and 873 deletions
@@ -0,0 +1,37 @@
package com.iluwatar.object.pool;
import java.util.HashSet;
/**
*
* Generic object pool
*
* @param <T>
*/
public abstract class ObjectPool<T> {
private HashSet<T> available = new HashSet<>();
private HashSet<T> inUse = new HashSet<>();
protected abstract T create();
public synchronized T checkOut() {
if (available.size() <= 0) {
available.add(create());
}
T instance = available.iterator().next();
available.remove(instance);
inUse.add(instance);
return instance;
}
public synchronized void checkIn(T instance) {
inUse.remove(instance);
available.add(instance);
}
@Override
public String toString() {
return String.format("Pool available=%d inUse=%d", available.size(), inUse.size());
}
}