使用Java对象池可复用重量级对象,减少创建与销毁开销。1. 引入Apache Commons Pool依赖;2. 定义池化对象类PooledObject;3. 实现BasePooledObjectFactory创建、包装对象;4. 配置GenericObjectPool参数并创建池;5. 借用对象后必须归还以避免资源耗尽。
Java对象池用于复用对象,减少频繁创建和销毁带来的性能开销,尤其适用于重量级对象。使用对象池通常依赖Apache Commons Pool等库。以下是使用Java对象池的基本步骤。
1. 引入对象池依赖
若使用Apache Commons Pool,需在项目中添加Maven依赖:
commons-pool2
2. 定义需要池化的对象
创建一个类表示要被池管理的对象,例如数据库连接、HTTP客户端等:
public class PooledObject {private String id = UUID.randomUUID().toString();
public void doWork() {
System.out.println("Processing with o

}
}
3. 实现PooledObjectFactory
实现BasePooledObjectFactory,定义对象的创建、包装和销毁逻辑:
@Override
public PooledObject create() {
return new PooledObject();
}
@Override
public PooledObject wrap(PooledObject obj) {
return new DefaultPooledObject(obj);
}
}
4. 创建并配置对象池
使用GenericObjectPool管理对象实例,可设置最大活跃数、最小空闲数等参数:
config.setMaxTotal(10);
config.setMinIdle(2);
MyPooledObjectFactory factory = new MyPooledObjectFactory();
GenericObjectPool
5. 从池中获取和归还对象
通过borrowObject()获取对象,使用后必须调用returnObject()归还:
try {
obj = pool.borrowObject(); // 获取对象
obj.doWork();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (obj != null) {
pool.returnObject(obj); // 归还对象
}
}
对象使用完毕必须归还,否则池中可用对象会耗尽。可结合try-with-resources或AOP确保回收。
基本上就这些。掌握对象池的关键是理解生命周期管理和资源复用机制。不复杂但容易忽略细节。








