[Core] ObjectPool<T> - "对象池"接口

T borrowObject() throws Exception, NoSuchElementException,
IllegalStateException：从该池中获得一个实例。
实例可能从PooledObjectFactory.makeObject()方法新创建，或是先前的空闲对象，然后使用PooledObjectFactory.activateObject(PooledObject)方法激活，然后使用PooledObjectFactory.validateObject(PooledObject)方法校验有效性。

按约定，客户端必须使用returnObject(Object)、 invalidateObject(Object)归还借来的实例。

当池被耗尽时，该方法的行为并没有被严格规定。

void returnObject(T obj) throws Exception：返回这个实例到池中。
按约定，对象必须是使用borrowObject()获取的。

void invalidateObject(T obj) throws Exception：标记这个对象为失效状态。
按约定，对象必须是使用borrowObject()获取的。

void addObject() throws Exception, IllegalStateException,
UnsupportedOperationException：使用工厂(factory)创建一个对象，初始化它， 并将它放入空闲对象池中。
当需要预加载一个池的空闲对象时，这个方法就特别有用！

void clear() throws Exception,
UnsupportedOperationException：清除池中的任何空闲对象，并释放任何相关的资源。
空闲的对象必须使用PooledObjectFactory.destroyObject(PooledObject)方法清除。

void close()：关闭该池，并释放任何与它相关的资源。


int getNumIdle()：返回该池中当前空闲的实例数量。
int getNumActive()：返回该池当前被借用的实例数量。