轉載:https://www.jianshu.com/p/381c86bdbff6java
看了看druid和dbcp2的原碼,發現他們都有各自存儲鏈接的方式。git
druid :
private volatile DruidConnectionHolder[] connections;
dbcp2
private final LinkedBlockingDeque<PooledObject<T>> idleObjects = new LinkedBlockingDeque<PooledObject<T>>();
以本身的理解寫了個簡單的鏈接池
- 採用LinkedBlockingQueue管理數據庫鏈接
- 實現javax.sql.DataSource接口
- 採用構造者設計模式
- 經過反射技術獲取驅動
- 兼容MYSQL5與6驅動
- 支持配置鏈接池資源消耗殆盡的處理策略
- 未實現空閒鏈接數控制
核心源碼
-
初始化鏈接池github
-
獲取鏈接sql
-
釋放鏈接數據庫
-
使用鏈接池設計模式