我碰到這個面試問題就來了:你將如何管理一個數據庫連接池? 我的想法是: 我將創建一個ArrayBlockingQueue<Connection>,
來創建連接對象,並把它們放在隊列時ajvm啓動。然後用某種形式的enum單例包裝它,這樣只有一個這樣的隊列,並且它在JVM的生命週期中保持活動狀態。如何管理一個自定義的數據庫連接池
然後使用某種工具/驅動程序類,將採取從隊列連接,並退回他們回到隊列。
我想我需要說這個還有什麼?我是否需要使隊列線程安全,以便多個請求不具有相同的連接?
我碰到這個面試問題就來了:你將如何管理一個數據庫連接池? 我的想法是: 我將創建一個ArrayBlockingQueue<Connection>,
來創建連接對象,並把它們放在隊列時ajvm啓動。然後用某種形式的enum單例包裝它,這樣只有一個這樣的隊列,並且它在JVM的生命週期中保持活動狀態。如何管理一個自定義的數據庫連接池
然後使用某種工具/驅動程序類,將採取從隊列連接,並退回他們回到隊列。
我想我需要說這個還有什麼?我是否需要使隊列線程安全,以便多個請求不具有相同的連接?
在我opninion你在這裏失蹤幾點:
連接應該返回回池中時,返回到初始狀態。例如,connection.setAutocommit(...);應該一定還原
我不是一個好主意,將原生連接包裝到您自己的javax.sql.Connection接口實現中,以控制和監視在連接上執行的操作。使用這種模式,你也可以實現一個有價值的功能:在close()返回連接池。調用
你需要一些menans控制在根據實際池的利用率池的連接數。看看如何「能力」和「負載因子」在Java集合實現得到一個粗略的實現思路,如果他們還活着
連接進行監控。對所有可能的數據庫進行歸檔並不容易。
你應該有一個線程來監視數據庫連接(它們是否關閉並打開新的連接) – anfy2002us
你是指uility/driver class是什麼意思? – LoveMeow