java对象池ObjectPool
来源:互联网 发布:excel数据录入程序 编辑:程序博客网 时间:2024/05/16 07:25
Java化工Apache配置管理
commons-pool提供了一套很好用的对象池组件。使用也很简单,不过对一些简单的对象使用对象池就没必要了。
ObjectPool定义了一个简单的池化接口,有三个对应实现
GenericObjectPool:实现了可配置的后进先出或先进先出(LIFO/FIFO)行为,默认是作为一个后进先出队列,这意味当对象池中有可用的空闲对象时,borrowObject 将返回最近的对象实例,如果将lifo 属性设置为false,则按FIFO行为返回对象实例。
StackObjectPool :实现了后进先出(LIFO)行为。
SoftReferenceObjectPool: 实现了后进先出(LIFO)行为。另外,对象池还在SoftReference 中保存了每个对象引用,允许垃圾收集器针对内存需要回收对象。
KeyedObjectPool定义了一个以任意的key访问对象的接口(可以池化对种对象),有两种对应实现。
GenericKeyedObjectPool :实现了先进先出(FIFO)行为。
StackKeyedObjectPool : 实现了后进先出(LIFO)行为。
PoolableObjectFactory 定义了池化对象的生命周期方法,我们可以使用它分离被池化的不同对象和管理对象的创建,持久,销毁。
BasePoolableObjectFactory这个实现PoolableObjectFactory 接口的一个抽象类,我们可用扩展它实现自己的池化工厂。
一个对象池使用的简单例子:
ObjectPool定义了一个简单的池化接口,有三个对应实现
GenericObjectPool:实现了可配置的后进先出或先进先出(LIFO/FIFO)行为,默认是作为一个后进先出队列,这意味当对象池中有可用的空闲对象时,borrowObject 将返回最近的对象实例,如果将lifo 属性设置为false,则按FIFO行为返回对象实例。
StackObjectPool :实现了后进先出(LIFO)行为。
SoftReferenceObjectPool: 实现了后进先出(LIFO)行为。另外,对象池还在SoftReference 中保存了每个对象引用,允许垃圾收集器针对内存需要回收对象。
KeyedObjectPool定义了一个以任意的key访问对象的接口(可以池化对种对象),有两种对应实现。
GenericKeyedObjectPool :实现了先进先出(FIFO)行为。
StackKeyedObjectPool : 实现了后进先出(LIFO)行为。
PoolableObjectFactory 定义了池化对象的生命周期方法,我们可以使用它分离被池化的不同对象和管理对象的创建,持久,销毁。
BasePoolableObjectFactory这个实现PoolableObjectFactory 接口的一个抽象类,我们可用扩展它实现自己的池化工厂。
一个对象池使用的简单例子:
- package tf;
- import org.apache.commons.pool.BasePoolableObjectFactory;
- import org.apache.commons.pool.ObjectPool;
- import org.apache.commons.pool.impl.StackObjectPool;
- public class Pool {
- public static void main(String[] args) throws Exception {
- ObjectPool pool = new StackObjectPool(new UserFactory());
- User u = (User) pool.borrowObject(); // 从池中借出一个对象
- u.setName("me");
- u.sayHello();
- pool.returnObject(u); // 归还对象
- }
- static class UserFactory extends BasePoolableObjectFactory {
- /**
- * 产生一个新对象
- */
- public Object makeObject() {
- return new User();
- }
- /**
- * 还原对象状态
- */
- public void passivateObject(Object obj) {
- User u = (User) obj;
- u.clear();
- }
- }
- static class User {
- String name;
- void setName(String name) {
- this.name = name;
- }
- void sayHello() {
- System.out.println("hello, " + name);
- }
- void clear() {
- name = "";
- }
- }
- }
- java对象池ObjectPool
- java对象池ObjectPool
- ObjectPool 对象池程序
- Unity 对象池之ObjectPool
- Unity3d中对象池(ObjectPool)的实现
- 什么情况下应该使用对象池(ObjectPool)
- Unity3d中对象池(ObjectPool)的实现思路
- 使用对象池(ObjectPool)方式处理子弹的发射逻辑
- Unity3d中对象池(ObjectPool)的概念和用法
- Unity3D对象池技术(ObjectPool)小例子
- Common(十四)—— ObjectPool对象池
- ObjectPool
- ObjectPool
- ObjectPool
- ObjectPool
- Build your own ObjectPool in Java to boost app speed
- java.lang.NoClassDefFoundError: org/apache/commons/pool/ObjectPool
- java.lang.NoClassDefFoundError: org/apache/commons/pool/ObjectPool
- 使用UDL创建数据库连接
- Selenium的getXpathCount方法的实际问题解决
- linux多线程编程(实例)
- linuxshell 读书笔记 (unix shell 第三版)
- 软件人员需把握物质能量信息三基元
- java对象池ObjectPool
- IIS配置需要登陆才能访问的目录权限
- Oracle 存储过程存取图片
- 用sqlCommandBuilder批量更新
- j2me Socket编程常用服务器和客户端编写结构
- 【备忘录-网络】常见HTTP状态值
- fcitx切换半角/全角,显示状态条
- 反射
- statusbar上根据不同语言,添加PM,AM,或者上下午