Apache Commons Pool官方文档

Apache Commons Pool 开源软件库提供了一个对象池API和一系列对象池实现。Apache Commons Pool 2.x与1.x相比实现了一个可重写的对象池实现。另外,性能和可伸缩性也有了改进,2.x版本包含鲁棒的实例追踪和对象池监控。2.x版本需要JDK6以上版本。

发布

查看下载页面获取发行版本。

特性

org.apache.commons.pool2包下定义了几个对象池接口和基类,在创建新的对象池实现时可
以参考。

PooledObjectFactory

PooledObjectFactory提供了一个管理对象池对象生命周期的通用接口。

public interface PooledObjectFactory<T> {
PooledObject<T> makeObject();
void activateObject(PooledObject<T> obj);
void passivateObject(PooledObject<T> obj);
boolean validateObject(PooledObject<T> obj);
void destroyObject(PooledObject<T> obj);
}

使用1.x版本的用户应该会注意到,在1.x中直接通过创建PoolableObjectFactorys来管理对象
池内的对象,版本2中通过PooledObjectFactorys来管理对象池内的对象(PooledObject)。
这些包装器对象维护对象池的状态,可以通过PooledObjectFactory内的方法来访问比如对象
池内某个对象的创建时间或最后使用时间。DefaultPooledObject类可以用来追踪对象池内对
象的状态。实现一个PoolableObjectFactory的最简单方式就是通过继承
BasePooledObjectFactory。BasePooledObjectFactory提供了一个makeObject()方法,这个
方法内部实现为wrap(create()),其中wrap和create都是抽象方法。你可以通过实现create方
法来创建你想通过对象来管理的底层对象,然后通过wrap方法来包装在PooledObject中创建
的实例。使用DefaultPooledObject包装器,可以如下

@Override
public PooledObject<Foo> wrap(Foo foo) {
return new DefaultPooledObject<Foo>(foo);
}

这里的Foo是一个被“池化”的类型(create()方法返回的类型)。KeyedPooledObjectFactory
也为KeyedObjectPool定义了一个类似的接口:

public interface KeyedPoolableObjectFactory<K,V> {
PooledObject<V> makeObject(K key);
void activateObject(K key, PooledObject<V> obj);
void passivateObject(K key, PooledObject<V> obj);
boolean validateObject(K key, PooledObject<V> obj);
void destroyObject(K key, PooledObject<V> obj);
}

BaseKeyedPooledObjectFactory提供了KeyedPooledObjectFactory的一个抽象实现。
org.apache.commons.pool2.impl 包下提供了对象池实现。

GenericObjectPool

GenericObjectPool提供了一系列配置选项,比如可以容纳的活跃或者空闲的实例个数,空闲
对象的清除策略,等等。在版本2中,还提供对被遗弃对象的追踪和移除。

SoftReferenceObjectPool

SoftReferenceObjectPool可以根据需要增长,但是可以允许虚拟机在需要时从对象池中清除
对象。

对象池从2.x迁移到2.y

使用2.x系列版本的客户端代码在使用最新的2.x发行版本时不需要做任何改变。
新的2.x发行版可能会支持一些新的配置属性。这些将会在变更日志中列出。需要注意,
Apache Commons Pool中的MBean接口(以MXBean或MBean结尾),比如
DefaultPooledObjectInfoMBean, GenericKeyedObjectPoolMXBean 或者
GenericKeyedObjectPoolMXBean为了支持新的属性,在不同版本之间发生改变。这些接口
不应该被客户端所实现,所以这些接口不需要考虑向后兼容性.

对象池从1.x迁移到2.x

Apache Commons Pool从1.x迁移到2.x需要一些代码改动。最大改动应该是包
org.apache.commons.pool更名为org.apache.commons.pool2和PooledObjectFactory的一些
实现类发生了改变。

虽然一些属性的名称为了一致性已经发生了改变,但是Apache Commons Pool确保了同名的属性在不同版本的池中有相同的含义。一些关键的实现类(GenericObjectPool 和 GenericKeyedObjectPool)保留了原来的属性,所以我们在升级的过程中可以不用修改这些属性的名称。不过,我们还是推荐使用新的属性名称。转载自 并发编程网 - ifeve.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: 中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值