c3p0

PooledDataSource(ComboPooledDataSource,PoolBackedDataSource) 用户使用的DataSource
C3P0PooledConnectionPoolManager(简称PoolManager)含多个auth(username+password)对应的Pool,基本上用的都是默认auth
C3P0PooledConnectionPool(简称Pool)
ResourcePool(BasicResourcePool,ResourcePoolFactory): 核心接口,所有对其内部状态的访问都需要加锁(其本身),比如用户线程的获取归还,异步线程池的创建移除连接,Timer线程定时的过期检查和空闲检查
Manager(PooledConnectionResourcePoolManager): acquire/destroy, checkin和checkout的处理
ConnectionPoolDataSource(WrapperConnectionPoolDataSource): 获取PooledConnection(对底层连接封装,NewPooledConnection,早期版本存在C3P0PooledConnection通过动态代理实现)
DataSource(DriverManagerDataSource):Driver获取连接

BasicResourcePool:
min max start inc(acquireIncrement,一次获取的增量) unused(池内的) managed(池内+借出的)
过期检查:CullTask定期检查或者checkout了一个资源再检查,根据如下属性
max_resource_age
max_idle_time
excess_max_idle_time(需要考虑min)
destroy_unreturned_resc_time
空闲检查:CheckIdleResourcesTask 定时(check_idle_resources_delay)对所有空闲(unused)资源检查可用性,检查时放入idleCheckResources,检查完后再移除
池大小调整(多处发生): 将池大小(managed)调整到target_pool_size,异步提交多个AcquireTask/RemoveTask

Connection(底层连接)NewPooledConnection(连接池内部使用) NewProxyConnection(用户使用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值