commons-pool的学习
2015-09-12 16:12
621 查看
在一些缓存,数据库的操作中总能看到commons-pool包的身影,从理论上,对一些实例化的成本的对象进行缓存,需要的时候从缓存池中拿出,可以降低应用的运行成本,提高效率,但是具体到实际中代码怎么实现,也是一知半解,简单阅读了apache官网的commons-pool的referrence,结合别人的理解,做一下笔记。
从对象的角度看,commons-pool提供了两个基本的接口,
PooledObject, 从名字上就可以知道,他是一个对象,是放在缓存池中的对象
ObjectPool,缓存池,用于存放PoolObject对象的池(有点拗口)
PooledObjectFactory,工厂类,用于生产缓存池
PoolObjectFactory的代码段
PooledObjectFactory必须是线程安全的,ObjectPool承诺不会将同一个object实例传递给PooledObjectFactory的多个方法。
PoolObjectFactory创建和管理PoolObject,这些PoolObject用于作为包装类包装我们要缓存的对象,包装类维持了缓存对象的状态,包装类有DefaultPooledObject,或者实现PoolableObjectFactory接口,或者抽象类BasePooledObjectFactory抽象类,包装类提供了makeObject()方法返回wrap(create()),其中wrap()和create()方法都是抽象方法,需要使用者自己扩展。
BaseKeyedPooledObjectFactory是实现KeyedPooledObjectFactory接口。
GenericObjectPool实现了ObjectPool接口,提供了丰富的缓存池操作。
从对象的角度看,commons-pool提供了两个基本的接口,
PooledObject, 从名字上就可以知道,他是一个对象,是放在缓存池中的对象
ObjectPool,缓存池,用于存放PoolObject对象的池(有点拗口)
PooledObjectFactory,工厂类,用于生产缓存池
PoolObjectFactory的代码段
public interface PooledObjectFactory<T> { PooledObject<T> makeObject(); //新增对象 void activateObject(PooledObject<T> obj);//用于从pool中借出去之前检测该对象是否处于钝化状态, void passivateObject(PooledObject<T> obj);//当对象被归还到池中之前执行 boolean validateObject(PooledObject<T> obj);//在他从池中借出的之前检测对象是否可用 void destroyObject(PooledObject<T> obj);//销毁对象 }
PooledObjectFactory必须是线程安全的,ObjectPool承诺不会将同一个object实例传递给PooledObjectFactory的多个方法。
PoolObjectFactory创建和管理PoolObject,这些PoolObject用于作为包装类包装我们要缓存的对象,包装类维持了缓存对象的状态,包装类有DefaultPooledObject,或者实现PoolableObjectFactory接口,或者抽象类BasePooledObjectFactory抽象类,包装类提供了makeObject()方法返回wrap(create()),其中wrap()和create()方法都是抽象方法,需要使用者自己扩展。
BaseKeyedPooledObjectFactory是实现KeyedPooledObjectFactory接口。
GenericObjectPool实现了ObjectPool接口,提供了丰富的缓存池操作。
相关文章推荐
- Apache Isis 1.4.0 发布,领域驱动开发框架
- Linux快速构建apache web服务器
- Awstats处理多apache日志
- 安装perl模块小窍门
- PHP+Apache在Windows 9x下的安装和配置
- Apache服务器配置全攻略
- Apache Web让JSP“动”起来
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- apache 环境下 php 的配置注意事项
- 在RedHat下安装apache jserv 1.1.2方法
- windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
- 在Windows XP下安装Apache+MySQL+PHP环境
- 解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
- apache rewrite防盗链三例
- Apache 配置详解(最好的APACHE配置教程)
- Apache+php+mysql在windows下的安装与配置(图文)第1/2页
- apache rewrite_module模块使用教程
- Apache rewrite重写规则的常见应用
- 关于Apache默认编码错误 导致网站乱码的解决方案