写点什么

Druid 连接池源码阅读 07

作者:石小天
  • 2022 年 5 月 17 日
  • 本文字数:484 字

    阅读完需:约 2 分钟

今天主要针对 keepAlive 属性设置为 true 以后,初始化连接池时会填充到 minIdle 数量 进行学习。

以下截取部分代码

        if (keepAlive) {            // async fill to minIdle            if (createScheduler != null) {                for (int i = 0; i < minIdle; ++i) {                    submitCreateTask(true);                }            } else {                this.emptySignal();            }        }
复制代码

由源代码注释可知,这里是异步填充到 minIdle


如果 createScheduler 不为空才提交创建任务

查找 createScheduler 赋值的地方

分别对应 public void setCreateScheduler(ScheduledExecutorService createScheduler) 方法

和 protected void cloneTo(DruidAbstractDataSource to) 方法


继续查看调用发现 setCreateScheduler 方法的调用方都是测试类

故推测值是由 cloneTo 方法设置

继续查找调用发现上层的调用方法为

 public DruidDataSource cloneDruidDataSource() {        DruidDataSource x = new DruidDataSource();
cloneTo(x);
return x; }
复制代码


即 createScheduler 是否为空是由构造方法调用的时候决定的。


用户头像

石小天

关注

还未添加个人签名 2018.11.07 加入

还未添加个人简介

评论

发布
暂无评论
Druid连接池源码阅读07_石小天_InfoQ写作社区