commons-pool2-2.4.2连接池读后笔记

花了一天,认真把配置项梳理了一下,分类整理如下:

// 0)构造poolConfig
                GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
                poolConfig.setJmxEnabled(false);// 是否启用统计,这里不启用
                // 1)系统启动
                poolConfig.setMinIdle(config.getIntValue(MyConstants.MINIDLE));// 启动时会有线程负责初始化这么多个连接,一个线程负责

 

 


                // 2)获取对象相关的配置
                // 获取一个object是1)直接borrow->create->等待队列可用+最大等待时长(最大等待时长的borrow)
                poolConfig.setFairness(BaseObjectPoolConfig.DEFAULT_FAIRNESS);// 从队列里borrow时加锁,默认值为false,保持默认,后台为一个ReentrantLock锁
                poolConfig.setMaxTotal(config.getIntValue(MyConstants.MAXTOTAL));// 是否可以直接create
                poolConfig.setBlockWhenExhausted(config.getBooleanValue(MyConstants.BLOCKWHENEXHAUSTED));
                poolConfig.setMaxWaitMillis(config.getLongValue(MyConstants.MAXWAIT));
                poolConfig.setTestOnBorrow(config.getBooleanValue(MyConstants.TESTONBORROW));// borrow的时候,是否需要测试->调用validateObject
                poolConfig.setTestOnCreate(config.getBooleanValue(MyConstants.TESTONCREATE));// create的时候,是否需要测试->调用validateObject
                //

 

 


                // 3)归还对象时相关的配置
                poolConfig.setMaxIdle(config.getIntValue(MyConstants.MAXIDLE));// 是否可以归还此对象?
                poolConfig.setLifo(false);// 一旦确定归还,放入队列头还是尾?
                poolConfig.setTestOnReturn(config.getBooleanValue(MyConstants.TESTONRETURN));// return的时候,是否需要测试->调用validateObject

 

 


                //
                // 4)定期驱逐策略[比较重要,及时驱逐劣币就靠这个了]
                poolConfig.setEvictionPolicyClassName(BaseObjectPoolConfig.DEFAULT_EVICTION_POLICY_CLASS_NAME);// 默认值
                poolConfig.setTimeBetweenEvictionRunsMillis(
                        config.getIntValue(MyConstants.TIMEBETWEENEVICTIONRUNSMILLIS));// evict驱逐线程的间隔周期
                poolConfig.setNumTestsPerEvictionRun(BaseObjectPoolConfig.DEFAULT_NUM_TESTS_PER_EVICTION_RUN);// 每次进行驱逐测试的个数
                poolConfig.setMinEvictableIdleTimeMillis(config.getLongValue(MyConstants.MINEVICTABLEIDLETIMEMILLIS));// 如果超过这段时间没有被使用,则无条件被强制驱逐
                poolConfig
                        .setSoftMinEvictableIdleTimeMillis(BaseObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS);// 如果当前idle的个数>minIdle,并且idle时长超过这个阈值(默认为30分钟),则立刻被驱逐
                poolConfig.setTestWhileIdle(config.getBooleanValue(MyConstants.TESTWHILEIDLE));// idle时,通过了evict测试,判断是否需要被测试->调用validateObject
                //

 

网上其他人写的博客也不错:可以做做参考:

http://my.oschina.net/u/1381600/blog/601870

http://www.bubuko.com/infodetail-948811.html

 

转载于:https://my.oschina.net/qiangzigege/blog/704676

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值