Apache Commons Pool的简单使用

因为在开源中国的资讯中看到Apache Commons Pool的版本升级了,Apache Commons Pool 2.6.2 发布

然后发版文档中描述了修复的几个bug,不求甚解!

01ee3df8e814ccd922b729e749e48c48e5d.jpg

我们就先用用这个最新的包来看看:

acbdbfb199bdf36a2ccc594149c9e064160.jpg

看javadoc文档,还是比较简洁的

c22d706b97d03ae6925373020a0ba892656.jpg

先来写一个demo:

a7335c43023eb380200562c407ef4570f9b.jpg

写一个测试方法:

5654c74f08190d5eb5e20048f852c2062b8.jpg

运行输出:

810f72c4883c53f05ea02fdd2870fee108d.jpg

当然如果我把循环的次数加大,比如从8改成10,那么就会阻塞等待其他的先归还,当然还可以设置超时等的限制。

这里使用自带的GenericObjectPoolConfig,配置主要如下:

3aada23ac77c3add91b36f7e6c69564c433.jpg

然后再介绍一下这些参数:

  1. maxActive: 链接池中最大连接数,默认为8.
  2. maxIdle: 链接池中最大空闲的连接数,默认为8.
  3. minIdle: 连接池中最少空闲的连接数,默认为0.
  4. maxWait: 当连接池资源耗尽时,调用者最大阻塞的时间,超时将跑出异常。单位,毫秒数;默认为-1.表示永不超时.
  5. minEvictableIdleTimeMillis: 连接空闲的最小时间,达到此值后空闲连接将可能会被移除。负值(-1)表示不移除。
  6. softMinEvictableIdleTimeMillis: 连接空闲的最小时间,达到此值后空闲链接将会被移除,且保留“minIdle”个空闲连接数。默认为-1.
  7. numTestsPerEvictionRun: 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
  8. testOnBorrow: 向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。默认为false。建议保持默认值.
  9. testOnReturn:  向连接池“归还”链接时,是否检测“链接”对象的有效性。默认为false。建议保持默认值.
  10. testWhileIdle:  向调用者输出“链接”对象时,是否检测它的空闲超时;默认为false。如果“链接”空闲超时,将会被移除。建议保持默认值.
  11. timeBetweenEvictionRunsMillis:  “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
  12.  whenExhaustedAction: 当“连接池”中active数量达到阀值时,即“链接”资源耗尽时,连接池需要采取的手段, 默认为1:
     -> 0 : 抛出异常,
     -> 1 : 阻塞,直到有可用链接资源
     -> 2 : 强制创建新的链接资源

我们可以看到PooledObjectFactory接口定义了要做哪一些方法。

按照阿里开发手册,如果在实现中使用了设计模式,那么在命名规则中的名称也要体现。

c60c5b4c15000002fe9c61113260514cdfd.jpg

当然在上面的代码中,我们使用的谁抽象类BasePooledObjectFactory

03e9270a42149108b10fb0d7c4415bf9cbb.jpg

  • Object makeObject() : 创建一个新对象;当对象池中的对象个数不足时,将会使用此方法来输出一个新的"对象",并交付给对象池管理.
  • void destroyObject(Object obj) : 销毁池不再需要的实例。
  • boolean validateObject(Object obj) : 检测对象是否有效。
  • void activateObject(Object obj) : 激活对象,让调用者使用时感觉像一个新创建的对象一样。
  • void void passivateObject(Object obj) : 当调用者"归还对象"时,取消初始化要返回到空闲对象池的实例。

后续多学习点再继续!

参考:https://shift-alt-ctrl.iteye.com/blog/1917782

转载于:https://my.oschina.net/u/2277632/blog/3038397

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值