[源] GenericObjectPool<T> - 通用的"对象池(ObjectPool)"实现
[Core] GenericObjectPool<T> - 一个可配置的对象池(ObjectPool)实现

public GenericObjectPool(PooledObjectFactory<T> factory,
GenericObjectPoolConfig config)：使用特定配置来创建一个新的"通用对象池"实例。

public void setConfig(GenericObjectPoolConfig conf)：设置基池配置。
public void setAbandonedConfig(AbandonedConfig
abandonedConfig)：设置"被遗弃的对象移除"配置。

public T borrowObject(long borrowMaxWaitMillis) throws
Exception：使用指定的等待时间来向池借用一个对象。

private PooledObject<T> create() throws Exception：尝试着创建一个新的包装的池对象。
1. 对象池是否被耗尽判断
2. 使用PooledObjectFactory.makeObject()来制造一个新的池对象
3. 将新创建的池对象追加到"池的所有对象映射表"中

private void destroy(PooledObject<T> toDestory) throws
Exception：销毁一个包装的池对象。
1. 设置这个池对象状态为"无效(INVALID)"
2. 将这个池对象从空闲对象列表和所有对象列表中移除掉
3. 使用PooledObjectFactory.destroyObject(PooledObject<T> p)来销毁这个不需要的池对象