/** * Returns an element to the pool of available elements. The element must * have been obtained from this pool through obtain(). The recycle() method * is called before the element is available for obtain(). * * @param element the element to be returned */ public void release(T element) { try { if (recycle(element)) { elements.add(element); } } finally { semaphore.release(); } } }