1.6和1.5最大的区别是支持泛型,编程比较方便
池的大小是初始化配置的,
在没有显式配置指定的情况下,
池大小默认为8.
可以通过GenericKeyedObjectPool.Config来配置。
下面给出2个例子,大家可以自行运行,或者跟贴留言,我来解答
根据key获取对象
package com.panguso.phl;
import org.apache.commons.pool.BaseKeyedPoolableObjectFactory;
import org.apache.commons.pool.impl.GenericKeyedObjectPool;
/**
1、复杂对象应该实现equals() 、hashCode()方法,以便不重复入池。
2、试图将null入池,不会成功的,但也不抛异常。
3、对于池对象,使用应该遵循“接而有还,再借不难”-----从池中获取,不用时候归池,否则当池中没有空闲可用的对象时候,程序会处于等待状态,如果没有显式的调用归还方法,则造成程序死锁。
* @author piaohailin
*
*/
public class TestGenericKeyedObjectPool {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
//创建一个对象池
GenericKeyedObjectPool<Integer, String> pool = new GenericKeyedObjectPool<Integer, String>(new BaseKeyedPoolableObjectFactory<Integer, String>() {
@Override
public String makeObject(Integer o) throws Exception {
return String.valueOf(o);
}
});
//清除最早的对象
pool.clearOldest();
//添加对象到池,重复的不会重复入池
for (int i = 0; i < 5; i++) {
pool.addObject(i);
}
//获取并输出对象
for (int i = 0; i < 10; i++) {
System.out.println(pool.borrowObject(i));
}
System.out.println("==========");
//输出池状态
System.out.println("pool.getMaxIdle()=" + pool.getMaxIdle());
System.out.println("pool.getMaxActive()=" + pool.getMaxActive());
}
}
无参获取对象
package com.panguso.phl;
import java.util.Random;
import org.apache.commons.pool.BasePoolableObjectFactory;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool.Config;
public class TestGenericObjectPool {
public static void main(String[] args) throws Exception {
Config config = new Config();
config.maxActive = 100;
config.maxWait = 3000; //设置这个,会抛Exception in thread "main" java.util.NoSuchElementException: Timeout waiting for idle object
GenericObjectPool<Float> pool = new GenericObjectPool<Float>(new BasePoolableObjectFactory<Float>() {
public Float makeObject() throws Exception {
return new Random().nextFloat();
}
}, config);
// for (int i = 0; i < 10000; i++) {
// pool.addObject();
// }
for (int i = 0; i < 10000; i++) {
System.out.println(System.currentTimeMillis());
Float f = pool.borrowObject();
System.out.println(f);
System.out.println(System.currentTimeMillis());
}
Float f = pool.borrowObject();
System.out.println(f);
pool.returnObject(f);
Float o1 = pool.borrowObject();
System.out.println(o1);
Float o2 = pool.borrowObject();
System.out.println(o2);
Float o3 = pool.borrowObject();
System.out.println(o3);
Float o4 = pool.borrowObject();
System.out.println(o4);
Float o5 = pool.borrowObject();
System.out.println(o5);
Float o6 = pool.borrowObject();
System.out.println(o6);
Float o7 = pool.borrowObject();
System.out.println(o7);
Float o8 = pool.borrowObject();
System.out.println(o8);
pool.returnObject(o1);
pool.returnObject(o2);
pool.returnObject(o3);
pool.returnObject(o4);
pool.returnObject(o5);
pool.returnObject(o6);
pool.returnObject(o7);
pool.returnObject(o8);
Float o9 = pool.borrowObject();
System.out.println(o9);
pool.returnObject(o9);
Float o10 = pool.borrowObject();
System.out.println(o10);
pool.returnObject(o10);
Float o11 = pool.borrowObject();
System.out.println(o11);
pool.returnObject(o11);
Float o12 = pool.borrowObject();
System.out.println(o12);
pool.returnObject(o12);
Float o13 = pool.borrowObject();
System.out.println(o13);
pool.returnObject(o13);
}
}
分享到:
相关推荐
commons-pool-1.3.jar+commons-pool.jar;java连接池jar包java连接池;java连接池jar;commons-pool-1.2.jar;commons-pool-1.3.jar+commons-pool.jar;java连接池jar包java连接池;java连接池jar;commons-pool-1.2.jar;...
开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发工具 commons-pool2-2.4.2开发...
赠送jar包:commons-pool2-2.3.jar; 赠送原API文档:commons-pool2-2.3-javadoc.jar; 赠送源代码:commons-pool2-2.3-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.3.pom; 包含翻译后的API文档:...
commons-pool-1.1.jar, commons-pool-1.2.jar, commons-pool-1.3-src.jar, commons-pool-1.3.jar, commons-pool-1.4.jar, commons-pool-1.5.1.jar, commons-pool-1.5.2-sources.jar, commons-pool-1.5.2.jar, ...
赠送jar包:commons-pool2-2.0.jar; 赠送原API文档:commons-pool2-2.0-javadoc.jar; 赠送源代码:commons-pool2-2.0-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.0.pom; 包含翻译后的API文档:...
赠送jar包:commons-pool2-2.10.0.jar; 赠送原API文档:commons-pool2-2.10.0-javadoc.jar; 赠送源代码:commons-pool2-2.10.0-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.10.0.pom; 包含翻译后的API...
赠送jar包:commons-pool2-2.10.0.jar; 赠送原API文档:commons-pool2-2.10.0-javadoc.jar; 赠送源代码:commons-pool2-2.10.0-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.10.0.pom; 包含翻译后的API...
赠送jar包:commons-pool2-2.4.3.jar; 赠送原API文档:commons-pool2-2.4.3-javadoc.jar; 赠送源代码:commons-pool2-2.4.3-sources.jar; 赠送Maven依赖信息文件:commons-pool2-2.4.3.pom; 包含翻译后的API文档...
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
赠送jar包:commons-pool2-2.5.0.jar; 赠送原API文档:commons-pool2-2.5.0-javadoc.jar; 赠送源代码:commons-pool2-2.5.0-sources.jar; 包含翻译后的API文档:commons-pool2-2.5.0-javadoc-API文档-中文...
commo-pool, commons-pool commons-pool commons-pool
Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现.
commons-dbcp-1.4.jar和commons-pool-1.5.6.jar
赠送jar包:commons-pool-1.6.jar; 赠送原API文档:commons-pool-1.6-javadoc.jar; 赠送源代码:commons-pool-1.6-sources.jar; 赠送Maven依赖信息文件:commons-pool-1.6.pom; 包含翻译后的API文档:commons-...
commons-pool.jar1.6.0版
commons-pool-1.6.jar DBCP数据库连接池必不可少的jar包
commons-dbcp-1.4和commons-pool-1.6驱动包下载(亲测可用)
commons-dbcp-1.2.2.jar和commons-pool-1.3.jar包,数据源包
赠送jar包:commons-pool-1.5.4.jar; 赠送原API文档:commons-pool-1.5.4-javadoc.jar; 赠送源代码:commons-pool-1.5.4-sources.jar; 赠送Maven依赖信息文件:commons-pool-1.5.4.pom; 包含翻译后的API文档:...
都是自己项目积累下来的jar 真正的好用的jar 第一:commons-pool-1.3.jar 第二:commons-pool-1.5.4.jar 第三:commons-pool-1.6.jar 第四:commons-pool2-2.1.jar