花了一天,认真把配置项梳理了一下,分类整理如下:
// 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