资源池-数据库连接池简单实现-JAVA版本
文章首发于:clawhub.club
分析
看了看druid和dbcp2的原码,发现他们都有各自存储连接的方式。
druid :
1 | private volatile DruidConnectionHolder[] connections; |
dbcp2
1 | private final LinkedBlockingDeque<PooledObject<T>> idleObjects = |
以自己的理解写了个简单的连接池
- 采用LinkedBlockingQueue管理数据库连接
- 实现javax.sql.DataSource接口
- 采用构造者设计模式
- 通过反射技术获取驱动
- 兼容MYSQL5与6驱动
- 支持配置连接池资源消耗殆尽的处理策略
- 未实现空闲连接数控制
核心源码
- 初始化连接池
- 获取连接
- 释放连接
- 使用连接池
github源码地址
ClawDataSource
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!