// com.alibaba.druid.pool.DruidDataSource#connections
private volatile DruidConnectionHolder[] connections
connetions
实际上是DruidConnectionHolder
的数组,保存着Druid
中所有的连接资源,资源的获取和回收都会通过connetions
,在执行连接销毁操作的时候也会在connections
中获取,比如去前5个,为什么取前五个就可以呢?我认为这是connections
本身对Holder
已经排好序,这样可以根据某个规则排序,简化逻辑.
初始化
在 com.alibaba.druid.pool.DruidDataSource#init
方法中进行连接池的初始化,池子的大小是最大连接数
// 连接池
connections = new DruidConnectionHolder[maxActive];
// 销毁连接列表
evictConnections = new DruidConnectionHolder[maxActive];
// 保活连接列表
keepAliveConnections = new DruidConnectionHolder[maxActive];
同时会创建initialSize
个初始连接,放进connections
中,这里时候存在顺序的,按照时间从小到大顺序,已创建时间从大到小顺序。
while (poolingCount < initialSize) {
PhysicalConnectionInfo pyConnectInfo = createPhysicalConnection(