All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nf.fr.eraasoft.pool.impl.BlockingQueueObjectPool Maven / Gradle / Ivy

The newest version!
package nf.fr.eraasoft.pool.impl;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;

import nf.fr.eraasoft.pool.PoolException;
import nf.fr.eraasoft.pool.PoolSettings;
import nf.fr.eraasoft.pool.PoolableObject;


/**
 * 
 * Object pool implementation based on LinkedBlockingQueue
* Use PoolSettings class to obtain an instance of this class * * @see PoolSettings * * @author eddie * * @param */ public abstract class BlockingQueueObjectPool extends AbstractPool { LinkedBlockingQueue linkQueue; public BlockingQueueObjectPool(final PoolableObject poolableObject, final PoolSettings settings) { super(poolableObject,settings); queue = new LinkedBlockingQueue(); linkQueue = (LinkedBlockingQueue) queue; try { init(); } catch (PoolException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public T getObj() throws PoolException { if (queue.size() == 0 && totalSize.get() < settings.max()) { create(); } T t = null; try { t = linkQueue.poll(settings.maxWait(), TimeUnit.SECONDS); poolableObject.activate(t); } catch (InterruptedException e) { throw new PoolException(e); } return t; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy