資源池-數據庫鏈接池簡單實現-JAVA版本

 

轉載: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驅動
  • 支持配置鏈接池資源消耗殆盡的處理策略
  • 未實現空閒鏈接數控制

核心源碼

  1. 初始化鏈接池github


     

    初始化鏈接池.png
  2. 獲取鏈接sql


     

     

    獲取鏈接.png
  3. 釋放鏈接數據庫


     

     

    釋放鏈接.png
  4. 使用鏈接池設計模式


     

     

    使用方式.png

github源碼地址

ClawDataSource

相關文章
相關標籤/搜索