`

apache commons-pool的配置参数

    博客分类:
  • JAVA
阅读更多

apache commons-pool的配置参数

write by yinmingjun,引用请注明。

 

最近在研究jedis,jedis的对象池是借助于apache的commons-pool实现的,发现关于commons-pool的文档真的很少,也许是大家都觉得commons-pool足够简单吧,不需要一个文档来描述。

 

看 了一下commons-pool的代码,写的真的很好,在java社区总是有这么一些人,在做无私的奉献,很佩服。在空闲之余,写一下commons- pool的配置说明,帮助那些只是希望简单理解或使用commons-pool的同学,知道如何配置commons-pool。

 

本文基于apache commons-pool-1.5.5。

 

对pool的配置一般是通过org.apache.commons.pool.impl.GenericObjectPool.Config来完成,这是个简单的数值对象,每个成员都预设了默认值,这里我们详细的介绍一下里面的各个成员的含义。

 

maxActive

控制池中对象的最大数量。

默认值是8,如果是负值表示没限制。

 

maxIdle

控制池中空闲的对象的最大数量。

默认值是8,如果是负值表示没限制。

 

minIdle

控制池中空闲的对象的最小数量。

默认值是0

 

whenExhaustedAction

指定池中对象被消耗完以后的行为,有下面这些选择:

  • WHEN_EXHAUSTED_FAIL                  0

  • WHEN_EXHAUSTED_GROW             2

  • WHEN_EXHAUSTED_BLOCK             1

 

如果是WHEN_EXHAUSTED_FAIL,当池中对象达到上限以后,继续borrowObject会抛出NoSuchElementException异常。

如果是WHEN_EXHAUSTED_GROW,当池中对象达到上限以后,会创建一个新对象,并返回它。

如果是WHEN_EXHAUSTED_BLOCK,当池中对象达到上限以后,会一直等待,直到有一个对象可用。这个行为还与maxWait有关,如果maxWait是正数,那么会等待maxWait的毫秒的时间,超时会抛出NoSuchElementException异常;如果maxWait为负值,会永久等待。

 

whenExhaustedAction 的默认值是WHEN_EXHAUSTED_BLOCKmaxWait的默认值是-1

 

maxWait

whenExhaustedAction 如果是WHEN_EXHAUSTED_BLOCK,指定等待的毫秒数。如果maxWait是正数,那么会等待maxWait的毫秒的时间,超时会抛出NoSuchElementException异常;如果maxWait为负值,会永久等待。

maxWait的默认值是-1

 

testOnBorrow

如果testOnBorrow被设置,pool会在borrowObject返回对象之前使用PoolableObjectFactoryvalidateObject来验证这个对象是否有效,要是对象没通过验证,这个对象会被丢弃,然后重新选择一个新的对象。

 

testOnBorrow的默认值是false

 

testOnReturn

如果testOnReturn被设置,pool会在returnObject的时候通过PoolableObjectFactoryvalidateObject方法验证对象,如果对象没通过验证,对象会被丢弃,不会被放到池中。

 

testOnReturn的默认值是false

 

testWhileIdle

指定idle对象是否应该使用PoolableObjectFactoryvalidateObject校验,如果校验失败,这个对象会从对象池中被清除。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

testWhileIdle的默认值是false

 

timeBetweenEvictionRunsMillis

指定驱逐线程的休眠时间。如果这个值不是正数(>0),不会有驱逐线程运行。

timeBetweenEvictionRunsMillis的默认值是-1

 

numTestsPerEvictionRun

设置驱逐线程每次检测对象的数量。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

numTestsPerEvictionRun的默认值是3

 

minEvictableIdleTimeMillis

指定最小的空闲驱逐的时间间隔(空闲超过指定的时间的对象,会被清除掉)。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效。

minEvictableIdleTimeMillis默认值是30分钟。

 

softMinEvictableIdleTimeMillis

minEvictableIdleTimeMillis类似,也是指定最小的空闲驱逐的时间间隔(空闲超过指定的时间的对象,会被清除掉),不过会参考minIdle的值,只有idle对象的数量超过minIdle的值,对象才会被清除。

这个设置仅在timeBetweenEvictionRunsMillis被设置成正值(>0)的时候才会生效,并且这个配置能被minEvictableIdleTimeMillis配置取代(minEvictableIdleTimeMillis配置项的优先级更高)。

softMinEvictableIdleTimeMillis的默认值是-1

 

lifo

pool可以被配置成LIFO队列(last-in-first-out)或FIFO队列(first-in-first-out),来指定空闲对象被使用的次序。

lifo的默认值是true

分享到:
评论

相关推荐

    java连接池有关jar:commons-pool-1.2.jar+commons-pool-1.3.jar+commons-pool.jar

    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.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    commons-pool2-2.10.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.10.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译...

    commons-pool2-2.3-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.3; 标签:apache、pool2、commons、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    commons-pool2-2.4.3-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.4.3; 标签:apache、pool2、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    commons-pool2-2.10.0-API文档-中英对照版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.10.0; 标签:apache、pool2、commons、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    commons-pool2-2.5.0-API文档-中英对照版.zip

    对应Maven信息:groupId:org.apache.commons,artifactId:commons-pool2,version:2.5.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    开发工具 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开发工具 commons-pool2-2.4.2开发...

    commons-pool2-2.11.1-bin.zip

    DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...

    commons-pool.jar

    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, ...

    commo-pool, commons-pool commons-pool commons-pool

    commo-pool, commons-pool commons-pool commons-pool

    commons-pool-1.5.6-bin.zip

    Apache commons-pool本质上是"对象池",即通过一定的规则来维护对象集合的容器;commos-pool在很多场景中,用来实现"连接池"/"任务worker池"等,大家常用的dbcp数据库连接池,也是基于commons-pool实现.

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    commons-pool-1.6-API文档-中文版.zip

    赠送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-dbcp-1.2.2.jar和commons-pool-1.3.jar包

    commons-dbcp-1.2.2.jar和commons-pool-1.3.jar包,数据源包

    commons-pool2-2.9.0-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-pool2:2.9.0; 标签:apache、commons、pool2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    commons-dbcp-1.4和commons-pool-1.6驱动包下载(亲测可用)

    commons-dbcp-1.4和commons-pool-1.6驱动包下载(亲测可用)

    commons-pool-1.6.jar

    commons-pool-1.6.jar DBCP数据库连接池必不可少的jar包

    commons-pool2-2.4.2-API文档-中英对照版.zip

    对应Maven信息:groupId:org.apache.commons,artifactId:commons-pool2,version:2.4.2 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    commons-pool-1.6.jar、commons-pool

    都是自己项目积累下来的jar 真正的好用的jar 第一:commons-pool-1.3.jar 第二:commons-pool-1.5.4.jar 第三:commons-pool-1.6.jar 第四:commons-pool2-2.1.jar

Global site tag (gtag.js) - Google Analytics