Obtains an instance from this pool. <p> By contract, clients <strong>must</strong> return the borrowed instance using {@link #returnObject}, {@link #invalidateObject}, or a related method as defined in an implementation or sub-interface. </p> <p> The behaviour of this method when the pool has been exhausted is not strictly specified (although it may be specified by implementations). </p>
Clears any objects sitting idle in the pool, releasing any associated resources (optional operation). Idle objects cleared must be {@link PooledObjectFactory#destroyObject(PooledObject)}.
Closes this pool, and free any resources associated with it. <p> Calling {@link #borrowObject} after invoking this method on a pool will cause them to throw an {@link IllegalStateException}. </p> <p> Implementations should silently fail if not all resources can be freed. </p>
Returns the number of instances currently borrowed from this pool. Returns a negative value if this information is not available. @return the number of instances currently borrowed from this pool.
Returns the number of instances currently idle in this pool. This may be considered an approximation of the number of objects that can be {@link #borrowObject borrowed} without creating any new instances. Returns a negative value if this information is not available. @return the number of instances currently idle in this pool.
Returns an estimate of the number of threads currently blocked waiting for an object from the pool. This is intended for monitoring only, not for synchronization control.
Returns an instance to the pool. By contract, <code>obj</code> <strong>must</strong> have been obtained using {@link #borrowObject()} or a related method as defined in an implementation or sub-interface.