Apache Common-pool2 参数说明


Apache Common-pool2 参数说明


在自己使用 Apache Common-pool2 写连接池的时候,一下几个参数需要特别注意的:

    maxTotal : 默认值:8

            运行创建的最大的连接个数

    minIdle   : 默认值:0

            最小保持的连接个数

    maxIdle  :默认值:8

            最大的空闲个数

    maxWaitMillis : 默认值:-1

            获取连接的最大的等待时间

    minEvictableIdleTimeMillis : 默认值:1000L * 60L * 30L (30分钟)

          连接空闲多久以后以后需要被回收。  ()

    timeBetweenEvictionRunsMillis  : 默认值: -1 

        连接池的 回收线程的检查时间 。 如果小于 0 ,则不会检查。

    numTestsPerEvictionRun  : 默认值 3  。 

        每次检查回收的线程的个数。 


——————————————————————————————————————————————

    上面是对常用的一些参数的说明,下面就 连接池的创建过程和销毁过程进行说明:

    线程池增加的过程如下:

            如果不停的创建连接,首先检查连接池里面是否有连接可以用,如果没有,检查 已经创建的连接的个数是否超过了maxTotal ,如果超过,等待maxWaitMillis 毫秒,看有没有连接释放,如果有,获取到连接,如果没有,直接返回 : java.util.NoSuchElementException: Timeout waiting for idle object 异常信息。

    如果没有超过maxTotal , 则创建一个连接出来。 用完这个连接,返回给线程池的时候,检查当前线程池的 大小是不是超过了 maxIdle , 如果超过了,直接 销毁掉这个连接,如果没有,返回给线程池。


    线程池减少的过程

        如果你没有配置 timeBetweenEvictionRunsMillis , 则连接池中保存的连接的最小的大小为 minIdle , 最大的值为 maxIdle  , maxIdle - minIdle 之间的数据是不会被主动回收的。

            这里就有个问题,如果你的系统的并发上去了。线程池的大小 增加到 maxIdle , 等系统的请求降下来以后,线程池的大小并没有恢复到 minIdle 的大小。

       如果配置了  timeBetweenEvictionRunsMillis  , 就会启动一个线程, 每隔 这个时间就会去检查 , 如果如果超过了 minEvictableIdleTimeMillis  这个时间没有使用 , 或者 大于了 maxIdle , 会进行回收, 回收的线程的个数 默认是 3 个 。  如果回收完了 , 再去检查 线程池的 大小是不是 小于 minIdle , 如果小于 , 则创建 对应 少的 线程 , 然后添加到 对应的线程池 中 。 

        


        

        


        









转载于:https://my.oschina.net/u/725800/blog/405912

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值