实现一个高效的线程安全且支持泛型的“对象池”(Object Pool)框架,满足以下要求:1. 对象池应支持动态扩容与缩容,避免内存浪费或瓶颈。2. 提供获取对象(GetObject)和释放对象(ReleaseObject)的方法,确保线程安全。3. 每个对象在被释放前不应被再次分配,即保证对象不被并发重复使用。4. 支持对象池中对象的“最大空闲超时”机制,超过该时间未被使用的对象应被自动销毁。5. 实现一个可选的“创建新对象失败时的等待策略”,如阻塞等待或抛出异常。6. 编写完整代码并解释其设计思想、关键类与方法的作用、线程同步机制、性能考量及可能的优化方向。
