Druid 连接池源码阅读 02
DataSource 类是 druid 连接池的核心类。
DruidDataSource 的构造方法
DruidDataSource 的构造方法有两个,如下图所示
构造方法可以指定 DruidDataSource 是否使用公平锁,默认使用公平锁。
初始化
每次获取 Connection 都会调用 init,内部使用 inited 标识 DataSource 是否已经初始化完成
init 主要完成以下工作:
初始化 Filter
加载数据库驱动 Driver
根据不同的数据库,实例化 ExceptionSorter
初始化连接检测器,不同数据库的实现不一样。
初始化 JdbcDataSourceStat,主要目的是做监控。
初始化 connections、evictConnections、keepAliveConnections 数组,分别用于存放可被获取的连接池、待清理的连接池、存活的连接池,数组的大小都是 maxActive
初始化 initialSize 个 Connection
开启 LogStatsThread 线程,用于定期打印 DruidDataSource 的一些数据,默认是不开启的,需要开启的话只需要设置 timeBetweenLogStatsMillis 指定打印的时间周期,log 步骤需要获取主锁
创建 CreateConnectionThread 线程
创建 DestroyConnectionThread 线程
初始化工作做了很多步骤,这一步也非常重要
评论