commons-pool2-2.4.2连接池读后笔记
2016-07-02 00:00
363 查看
花了一天,认真把配置项梳理了一下,分类整理如下:
// 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
// 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
相关文章推荐
- FTPClient与commons-pool2
- 连接池Commons Pool2的使用
- Apache commons-pool2-2.4.2源码学习笔记
- 老王的spring-boot
- Mycat的JDBC后端框架
- Mycat的事务管理机制
- Mycat 的分片规则设计
- 从零开始开发JVM语言(十三)代码生成与ASM
- 六、TCP C/S:Linux connect 超时设置
- Num64 前台用户登录&进入账户中心
- Mac OSX上brew,sdkman
- git 取消修改:修改了一些文件,但是并没有commit
- 查看远程仓库:git remote
- git status,git status -uno,git status -s
- Git 基础 - 查看提交历史
- El表达式
- Ubuntu 16.04 LTS 下Nginx的编译安装与启动
- C/C++中const的基本访问规则
- django-QueryDict 对象
- 如何实现Redis 的持久化