jakata common pools 源码研究

    前几天和同事聊天,同事做c++的,聊到c++没有很好的数据库连接池库,同事想自己写一个,但担心自己考虑不全面。我不以为然,数据库连接池而已,又不是没写过,没有open source之前,还不是自己写。同事却认为定我考虑的不全面。所以,才找来jakata common pools的源码看看。

 jakata common pools中主要就以下三个接口
   ObjectPool   连接池
   ObjectPoolFactory  连接池工厂
   PoolableObjectFactory  连接工厂
扩展开有:
基于key值管理的实现接口:
 KeyedObjectPool
KeyedObjectPoolFactory
KeyedPoolableObjectFactory
继续扩展:
基于key值管理的一个简单实现的接口
BaseKeyedObjectPool
................

同时提供了BaseKeyedObjectPool的几种算法的实现,主要集中在对象在pools中的储存的数据结构不同。

功能上:
ObjectPool   :
borrowObject 获取连接
returnObject 返回连接
invalidateObject(Object obj) 验证连接是否可用
addObject()  增加连接
getNumActive 获取活动连接数目
clear 清空
close 关闭


在实现中,提供了一些额外的功能:(以GenericKeyedObjectPool 为例)
maxIdle  最大空闲连接
maxActive 最大活跃连接
maxTotal  最大总数
minIdle 最小空闲
maxWait 最大阻塞时间
whenExhaustedAction 数据库连接没有后,如何处理
testOnBorrow  获取连接时,是否测试连接
testOnReturn   返回连接是否测试连接
testWhileIdle   空闲是否测试连接
timeBetweenEvictionRunsMillis 测试连接时间间隔
numTestsPerEvictionRun  空闲时同时测试连接数目
minEvictableIdleTimeMillis  最小可避免空闲时间。

   所有可能产生并发的地方都使用了synchronized进行了串行化。效率一般。实现较为简单

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值