Apache默认提供的3种ObjectPool:
StackObjectPool,GenericObjectPool,SoftReferenceObejctPool
-
public interface ObjectPool {
- Object borrowObject();
-
void returnObject(Object borrowed);
- void addObject();
- void setFactory(PoolableObjectFactory)
- }
StackObjectPool,GenericObjectPool,SoftReferenceObejctPool,一般使用StackObejctPool就可以了
StackObjectPool-》 用java.util.Stack来维护对象池
SoftReferenceObjectPool-》 用java.util.ArrayList来维护对象池
GenericObjectPool-》 用org.apache.commons.collections.CursorableLinkedList来维护对象池
使用PoolableObjectFactory来创建pool。而没有必要间接使用ObjectPoolFactory createPool()
问题:
1.对应Socket,我需要真正实现的代码就是:
1) 如果socket正在被使用;那么是不能被其他人同时使用的
2) 如果socket使用完了;那不必关闭,可以设置状态并让其他人继续使用。
3) 如果将要使用的socket已经close(),那么必须重新open()
4) 对maxWait,maxIdle的处理;maxIdle表示可以在空闲时期建立的socket连接数;
2. dbcp的参考实现
PoolingDataSource 间接实现了ObjectPool接口(使用GenericObjectPool),
1)可以borrowObject,而borrowObject拿出来的Object就是Connection。
2)在初始化的时候,DataSourceImpl还可以根据pool的大小来addObject();
socket相对于数据库连接中的connection。
getConnection() --> borrowObject();
connection.close() -->returnObject(obj);
设计和实现:
1)需要实现ObjectPool接口,用于getSocketClient()
2)需要对SocketClient的封装,重载close()方法。
3)PoolableObjectFactory需要吗?
4)除了接口,commons-pool可以帮我做什么?
直接使用StackObjectPool,但是要自己实现PoolableObjectFactory 方法。
5) 如何判断有空闲的连接?
分享到:
相关推荐
redis和java操作redis的所有资源redis3.2+jedis2.8.jar+common-pool2.jar+common-pool2-source.rar
赠送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文档:...
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
commons-dbcp-1.4 jar java连接池. .commons-dbcp 是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:
赠送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文档-中文...
maven库使用最多的2.9.0 Jedis 和对应的common-pool2.jar
需要使用Redis连接池的话,还需commons-pool包,提供了强大的功能,包含最新的jar包
commons-pool2-2.3.jar commons-pool2.jar是一个十分常用的jar文件,commons-pool2.jar文件适用于java开发中的与连接池进行连接部分使用,如果您缺少这个jar文件马上下载commons-pool2.jar吧
common-pool的eclipse源码+例子,可以直接导入到eclipse中运行,例子的代码放在src/main/java mh.test中,注意eclipse的jre版本不要用1.8,那样会出现duplicate method的错误!
go-commons-pool, 用于golang的通用对象池 共享池 go公共池是用于 Golang的通用对象池,直接从 Apache公共池重写。特性支持自定义 PooledObjectFactory 。Rich pool配置选项,可以精确控制池对象生命周期。 请参见 ...
使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...
赠送jar包:common-image-3.1.1.jar; 赠送原API文档:common-image-3.1.1-javadoc.jar; 赠送源代码:common-image-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-image-3.1.1.pom; 包含翻译后的API文档:...
commons-dbcp-1.4.jar和commons-pool-1.4.jar
数据源和连接池的jar包 commons-dbcp-1.2.2.jar commons-pool-1.3.jar
Jedis 连接池必须要用的一个pool2 jar包,以往的pool是不行的,怎么不能免费下载了啊
赠送jar包:flink-table-common-1.12.7.jar; 赠送原API文档:flink-table-common-1.12.7-javadoc.jar; 赠送源代码:flink-table-common-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.12.7....
jedis 2.9jar包括源代码及common-pool 下面是官方地址,不用积分: https://github.com/xetorthio/jedis http://mvnrepository.com/artifact/redis.clients/jedis/2.9.0
赠送jar包:springfox-swagger-common-3.0.0.jar; 赠送原API文档:springfox-swagger-common-3.0.0-javadoc.jar; 赠送源代码:springfox-swagger-common-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-...
赠送jar包:activiti-common-rest-5.21.0.jar; 赠送原API文档:activiti-common-rest-5.21.0-javadoc.jar; 赠送源代码:activiti-common-rest-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-common-rest-...
赠送jar包:proto-google-common-protos-1.17.0.jar; 赠送原API文档:proto-google-common-protos-1.17.0-javadoc.jar; 赠送源代码:proto-google-common-protos-1.17.0-sources.jar; 赠送Maven依赖信息文件:...