资源池-数据库连接池简单实现-JAVA版本

 

转载:https://www.jianshu.com/p/381c86bdbff6

看了看druid和dbcp2的原码,发现他们都有各自存储连接的方式。

druid :

private volatile DruidConnectionHolder[] connections;

dbcp2

private final LinkedBlockingDeque<PooledObject<T>> idleObjects =
        new LinkedBlockingDeque<PooledObject<T>>();

以自己的理解写了个简单的连接池

  • 采用LinkedBlockingQueue管理数据库连接
  • 实现javax.sql.DataSource接口
  • 采用构造者设计模式
  • 通过反射技术获取驱动
  • 兼容MYSQL5与6驱动
  • 支持配置连接池资源消耗殆尽的处理策略
  • 未实现空闲连接数控制

核心源码

  1. 初始化连接池


    初始化连接池.png
  2. 获取连接


     
    获取连接.png
  3. 释放连接


     
    释放连接.png
  4. 使用连接池


     
    使用方式.png

github源码地址

ClawDataSource

原文地址:https://www.cnblogs.com/shoshana-kong/p/11249162.html