commons-pool2 6 - 总结

场景介绍

需要复用,但是创建开销比较大的对象
支持处理对象的有效性验证

概念

pooledObject:池对象
pooledObjectFactory:池对象工厂
objectPool:池
xxxConfig:各种配置

pooledObject

注意状态变换以及状态机

objectPool

idle和active概念

运行机制

borrowObject

用于借出对象

形式:
阻塞形式
非阻塞形式

returnObject

用于归还对象

验证机制

lazy验证

即testOnReturn,testOnBorrow等

non-lazy验证

abandon

处理allocated状态,超过一定时间没有用的pooledObj
特定条件触发

evict

处理idle状态
1.局部,pooledObj.evictTest
2.全局,根据evictConfig,evictPolicy进行的evict
定时触发

目前涉及的应用

jedis,会在之后的jedis源码阅读中介绍
dbcp

思考

code冗余,javadoc不清晰

难以接入,最方便就是继承默认的

流程太复杂,耦合性有点高,配置复杂
比如说evict这个东西出现在poolObject和objectPool里面
比如pooledObject要知道需不需要AbandonLog

你可能感兴趣的:(commons-pool2 6 - 总结)