2012-07-07 106 views
1

如果我有一個處理數據庫的java代碼,並且想在我的應用程序中使用多線程。每個線程都假設運行一個包含數據庫插入的函數。我的問題是:我應該在哪裏放置以下語句:使用多線程連接到MySQL DB

Connection con = DriverManager.getConnection (dbUrl); 
query = " insert into schema.table values (default,?,?)"; 
preparedStmt = con.prepareStatement(query); 

我應該將它們放置在run所以每一個線程中執行呢?或在Main,所以他們只執行一次?或者在run函數調用的函數內?當我有多線程時,我需要知道插入數據庫的正確方法。謝謝。

回答

2

您應該考慮創建一個ConnectionPool並從該池中獲取與您數據庫相關工作的連接。

以下兩個鏈接可能是你的興趣:

Connection Pooling
Apache Commons DBCP

編輯感謝@MJB指出這一個出
c3p0是另外一個,這是非常好。
BoneCP是另一個

但在一天結束時,簡單的一點是:您需要實現連接池。您選擇哪一個完全取決於您的要求。

+0

另外C3P0和BoneCP都是很好的連接池。 – MJB 2012-07-07 16:48:51

+0

連接池可能是解決此問題的最佳方法。如果其他線程執行不同類型的作業,您也可以考慮將消息傳遞給處理數據庫交互的線程。 – 2012-07-07 20:33:29