blob: e16ba4174107feff0ef454d548814ffba8454342 [file] [log] [blame]
package org.eclipse.osee.ote.collections;
import java.util.concurrent.ArrayBlockingQueue;
public class ObjectPool<T> {
private final ArrayBlockingQueue<T> objs;
private final ObjectPoolConfiguration<T> config;
public ObjectPool(ObjectPoolConfiguration<T> config) {
this.config = config;
objs = new ArrayBlockingQueue<>(config.getMaxSize());
if(config.preallocate()){
for(int i = 0; i < config.getMaxSize(); i++){
objs.offer(config.make());
}
}
}
public T getObject(){
T obj = objs.poll();
if(obj == null){
obj = config.make();
}
return obj;
}
public void returnObj(T obj){
objs.offer(obj);
}
}