blob: d9e3b3f78882213c0046fa378226aad0ec4c6398 [file] [log] [blame]
package backtype.storm.utils;
import java.util.concurrent.ConcurrentLinkedQueue;
public class ThreadResourceManager<T> {
public static interface ResourceFactory<X> {
X makeResource();
}
ResourceFactory<T> _factory;
ConcurrentLinkedQueue<T> _resources = new ConcurrentLinkedQueue<T>();
public ThreadResourceManager(ResourceFactory<T> factory) {
_factory = factory;
}
public T acquire() {
T ret = _resources.poll();
if(ret==null) {
ret = _factory.makeResource();
}
return ret;
}
public void release(T resource) {
_resources.add(resource);
}
}