package org.openxdm.xcap.server.slee.resource.appusagecache; import java.util.concurrent.ArrayBlockingQueue; import org.openxdm.xcap.common.appusage.AppUsage; import org.openxdm.xcap.common.appusage.AppUsageFactory; public class AppUsagePool { private ArrayBlockingQueue<AppUsage> queue = null; public AppUsagePool(AppUsageFactory factory, int queueSize) { queue = new ArrayBlockingQueue<AppUsage>(queueSize); for(int i=0;i<queueSize;i++) { try { queue.put(factory.getAppUsageInstance()); } catch (InterruptedException e) { // shouldn't happen e.printStackTrace(); } } } public AppUsage borrow() throws InterruptedException { return queue.take(); } public void release(AppUsage appUsage) { queue.offer(appUsage); } }