commons pool2对象池入门

来源:互联网 发布:逆战天梯卡数据不扣分 编辑:程序博客网 时间:2024/05/16 18:47

apache commons pool,官方称之为 Generic object pooling component,即通用的对象池组件。
The Apache Commons Pool open source software library provides an object-pooling API and a number of object pool implementations. 既然称为Generic通用的,那么它的源码抽象层次应该比较高,推测主要为方法的定义、模式的设计等,具体实现较少。源码应该较为简单,看懂不是什么难事。

commons pool2的源码在这里:

https://commons.apache.org/proper/commons-pool/download_pool.cgi

javadoc在这里:

https://commons.apache.org/proper/commons-pool/api-2.4.2/index.html

The org.apache.commons.pool2 package defines a handful of pooling interfaces and some base classes that may be useful when creating new pool implementations. 该包定义了一系列对象池接口,还有一些在创建具体对象池时会用到的抽象基类。

commons pool2 一共有三个最基本的接口:

1. ObjectPool<T>2. PooledObjectFactory<T>3. PooledObject<T> extends Comparable<PooledObject<T>>

ObjectPool代表一个对象池,通常在一个具体的对象池实现中,将此接口暴露给调用者。对象池对其持有的对象的生命周期负责,提供的方法有创建对象、获取对象、归还对象、销毁对象等。

PooledObjectFactory定义了一系列有关对象的生命周期的方法,供ObjectPool调用。PooledObjectFactory应为线程安全的。

这里写图片描述

PooledObject 是一个包裹类,用来包裹对象池中的对象,目的是跟踪池中对象的一些附加信息,比如对象状态。需要线程安全。

Defines the wrapper that is used to track the additional information, such as state, for the pooled objects.Implementations of this class are required to be thread-safe.

上面三个超类的三角关系应该很明确了,ObjectPool持有PooledObjectFactory,对外暴露使用接口,PooledObjectFactory管理PooledObject的生命周期,PooledObject包裹池中对象。

原创粉丝点击