资源池-数据库连接池简单实现-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 驱动
- 支持配置连接池资源消耗殆尽的处理策略
- 未实现空闲连接数控制
核心源码
-
初始化连接池
初始化连接池.png -
获取连接
获取连接.png -
释放连接
释放连接.png -
使用连接池
使用方式.png