试用 commons-pool
来源:互联网 发布:金蛇雾化器做丝数据 编辑:程序博客网 时间:2024/06/02 18:35
上一篇文章中提到,提高 Java 程序的性能的一个基本想法是,减少频繁的对象创建和销毁。
最近仔细分析了一下自己的一个程序,因为这个程序需要进行大量的字符串操作,会大量新建出临时的 StringBuffer 对象,这种对象用完一次就扔。尤其是在一个函数中,每次调用这个函数的时候都新建一个 StringBuffer ,函数退出的时候这个 StringBuffer 就没用了,而这个函数会被调用上万次,积累下来对性能的损耗可想而知。
所以我想到了使用对象池技术:每次用完 StringBuffer 并不销毁,而是把它存在那里,下次要用的时候只需要调用 setLength(0) 就又可以再次利用了,低碳环保。
正好看到 Apache Commons 有个 commons-pool(http://commons.apache.org/pool/),一种实现对象池的框架。于是试用了一下。
commons-pool 对对象池的抽象是:
“借出”对象和“归还”对象,这个用词很生动形象。
在池中的对象有两种状态:active 表示这个对象正在被程序使用;idle 空闲态,表示该对象在池中空闲,可以被分配出去。
于是我们不难理解如下配置:
maxIdle :指定空闲对象的最大数目。如果空闲对象超出这个值,GenericObjectPool 会清理空闲对象,减少到这个值。这是为了避免池中的对象过多,会占用过多的内存。
好了,废话不多说,直接上代码:
在理解了对象池的实现原理之后,我们也可以自己实现一个,下面是我自己实现的简单 StringBuffer 池:
这里使用 Hashtable 来保证线程安全。
- 试用 commons-pool
- Apache Commons Pool试用小记
- apache commons pool
- 对象池commons-pool
- commons-pool 学习笔记
- Commons Pool组件
- Apache commons-pool 技术
- Apache commons-pool
- commons-pool简介
- apache commons pool
- apache commons pool
- commons-pool的学习
- commons-pool分析
- commons-pool 连接参数
- commons-pool 解析
- 试用commons-jexl
- Jakarta Commons项目研究--pool
- Jakarta Commons项目研究--pool
- 各种基本算法实现小结(六)—— 查找算法
- SQL 语句获取表名列名
- 各种基本算法实现小结(七)—— 常用算法
- 《Windows核心编程》---CAPIHook类
- Floyd算法
- 试用 commons-pool
- 2010年(第24届)电子信息百强企业名单
- NIS服务器搭建
- 人员信息管理(Ⅰ)
- 数据库组件 Hxj.Data (二十) (分页)
- 关于学习心态的思考
- 人员信息管理(Ⅱ)
- C# 遍历控件
- 用Shell来运行dos下的ping命令