当前位置: 首页 > news >正文

java commons-pool_apache commons-pool的配置参数

class="title content-title">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_BLOCK,maxWait的默认值是-1。

?

maxWait

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

maxWait的默认值是-1。

?

testOnBorrow

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

?

testOnBorrow的默认值是false。

?

testOnReturn

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

?

testOnReturn的默认值是false。

?

testWhileIdle

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

这个设置仅在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)或FIFO队列(first-in-first-out),来指定空闲对象被使用的次序。

lifo的默认值是true。

相关文章:

  • JAVA CP936编码转utf8_Java编码转换 - querychinesesto的个人空间 - OSCHINA - 中文开源技术交流社区...
  • java hssffont_Java HSSFFont.setBoldweight方法代碼示例
  • java怎样创建字符串列表_java第三季lt;6-5gt;:生成随机字符串列表并排序之实现...
  • java多表return语句吗_java – 需要一个return语句吗? – 新编码
  • java网格布局如何为空_Java 网格布局
  • java 反序列化php对象_Java对对象的序列化和反序列化
  • Java如何读写基本数据类型和对象_114.Java操作基本数据类型的流对象
  • java 内部类 调用函数_Java中内部类使用方法实战案例分析
  • java 线程中途返回一个值_Java 实现线程的方式有几种方式?带有返回值的线程怎么实现?...
  • java ssh框架 session工厂如何配置连接orcale_【学习笔记】linux操作SSH互信的配置方法 ssh等效连接配置案例...
  • java异常博客讲解_Spock代码讲解-异常测试
  • JAVA websocket 没有关闭_如何在Java Spring Tomcat中快速关闭无响应的Websocket?
  • java布局不能完全填充_Java Swing gridbaglayout无法填充完整框架
  • 关于租车问题的java视频_Java第二季-答答租车系统(不合理的地方,请大家拍砖)...
  • java递归查询无限极分类_获取无限极分类底级分类之后查询(递归)
  • “大数据应用场景”之隔壁老王(连载四)
  • 「译」Node.js Streams 基础
  • 4. 路由到控制器 - Laravel从零开始教程
  • Java基本数据类型之Number
  • Linux下的乱码问题
  • mongo索引构建
  • react 代码优化(一) ——事件处理
  • ReactNativeweexDeviceOne对比
  • spring-boot List转Page
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 关于 Cirru Editor 存储格式
  • 排序算法学习笔记
  • 容器服务kubernetes弹性伸缩高级用法
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 软件开发学习的5大技巧,你知道吗?
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 栈实现走出迷宫(C++)
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #考研#计算机文化知识1(局域网及网络互联)
  • $GOPATH/go.mod exists but should not goland
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET面试题(二)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • 。Net下Windows服务程序开发疑惑
  • ::
  • @Conditional注解详解
  • @property括号内属性讲解
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • []Telit UC864E 拨号上网
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [C语言]——柔性数组
  • [docker] Docker的私有仓库部署——Harbor