Apache Commons Pool2连接池代码
来源:互联网 发布:电脑桌面软件图标 编辑:程序博客网 时间:2024/05/17 01:25
2013年,Apache Commons Pool 2.0 发布,这是一个完全重写的对象池的实现。实现的代码和原来差异很大,原来的一些例子就不能用了。按照上面的例子,用pool2的类和方法重写下。
ApacheCommons Pool 2.0 代码如下:
package test.ffm83.commons.pool;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.commons.pool2.impl.GenericObjectPool;
/**
* commons pool的简单实用,基于2.x版本
* 1. Factory BasePooledObjectFactory
* 2. Pool的配置 就是pool
* 3. Pool实例 Resource
* @author范芳铭
*/
public classPool2BaseUsage {
public static void main(String[] args) {
finalGenericObjectPool<Resource> pool =new GenericObjectPool<Resource>(
newTestPoolableObjectFactory());
pool.setMaxTotal(2);
for (int i = 0; i < 6; i++) {
new Thread(new Runnable() {
@Override
publicvoid run() {
try {
Resourceobj = pool.borrowObject();//注意,如果对象池没有空余的对象,那么这里会block
System.out.println(StringUtils.rightPad(obj.toString()+",获取对象", 50,"-"));
Thread.sleep(5000);
pool.returnObject(obj);//归还连接池资源
System.out.println(StringUtils.leftPad(obj.toString()+",归还对象", 50,"-"));
}catch(Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
/**
* commons pool的简单实用,基于2.x版本
* 1.x的 BasePoolableObjectFactory类修改为 BasePooledObjectFactory
* @author范芳铭
*/
static classTestPoolableObjectFactory extends BasePooledObjectFactory<Resource>{
@Override
public Resource create()throws Exception {
return new Resource();
}
@Override
publicPooledObject<Resource> wrap(Resource resource) {
return newDefaultPooledObject<Resource>(resource);
}
/**
* When an object is returned to the pool,clear the buffer.
*/
@Override
public voidpassivateObject(PooledObject<Resource> resource) {
//resource.getObject().setRid(-1);
}
}
static class Resource {
public static int id;
private int rid;
public Resource() {
synchronized (this) {
rid = id++;
}
}
public int getRid() {
returnrid;
}
public void setRid(int rid){
this.rid = rid;
}
@Override
public String toString() {
SimpleDateFormatdf = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
Stringstr = df.format(newDate()) +","+ "id:"+rid;
return str;
}
}
}
运行效果如下:
2014-12-19 15:51:58,id:1,获取对象---------------------
2014-12-19 15:51:58,id:0,获取对象---------------------
2014-12-19 15:52:03,id:0,获取对象---------------------
---------------------2014-12-1915:52:03,id:0,归还对象
---------------------2014-12-1915:52:03,id:1,归还对象
2014-12-19 15:52:03,id:1,获取对象---------------------
---------------------2014-12-1915:52:08,id:0,归还对象
2014-12-19 15:52:08,id:0,获取对象---------------------
---------------------2014-12-1915:52:08,id:1,归还对象
2014-12-19 15:52:08,id:1,获取对象---------------------
---------------------2014-12-1915:52:13,id:0,归还对象
---------------------2014-12-1915:52:13,id:1,归还对象
- Apache Commons Pool2连接池代码
- 利用Apache commons pool2构建池应用
- 利用Apache commons pool2构建池应用
- Apache Commons-pool2简记
- Apache Commons-pool2
- apache commons pool2: 整体结构
- Apache Commons Pool2 源码分析
- Redis连接池---jedis-2.9.0+commons-pool2-2.4.2
- 从commons pool2到池
- commons pool2对象池入门
- commons pool2
- Apache Commons pool 简介和pool连接池代码
- commons pool2对象池的使用
- commons-pool2对象池分配回收策略
- Apache common pool2 对象池
- Apache Commons Pool2-空闲对象的驱逐检测机制
- 报错: org.apache.commons.pool2.impl.GenericObjectPoolConfig not found
- 找不到org.apache.commons.pool2.impl.GenericObjectPoolConfig的解决方法
- 第十七周项目6-学生成绩统计(一)
- OC-3
- post提交数据时对于帐号密码加密的问题
- Apache Commons pool 简介和pool连接池代码
- Java中的String与常量池
- Apache Commons Pool2连接池代码
- 又是一年大雪时,母校腊梅依傲然
- 代理模式
- 第17周项目6.1 学生成绩统计
- SDUT14级队员训练1 H - Repeating Decimals
- Git笔记(三)——[cherry-pick, merge, rebase]
- IplImage, CvMat, Mat 的关系(条理清晰)
- vi编辑器
- 嵌入式linux根文件系统制作(基于arm)