0
在我的項目,我有很多的線程運行從網絡併發下載和插入/從MySQL數據庫中選擇。 我的數據庫管理器看起來是這樣的:JDBC:共享連接或使用連接池
private Connection conn;
private DatabaseManager() {
// Initialize conn
}
public static synchronized DatabaseManager getInstance() {
if (DatabaseManager.instance == null) {
DatabaseManager.instance = new DatabaseManager();
}
return DatabaseManager.instance;
}
public void deleteX() {
try {
Statement stmt = conn.createStatement();
String sql = //query
stmt.executeUpdate(sql);
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public X getX(...) {
try {
Statement stmt = conn.createStatement();
ResultSet result= // Grab and do some thing
result.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public void insert(String query) {
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(query);
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
在100多個線程,呼叫是:
DatabaseManager.getInstance().getX(1, 1);
或
DatabaseManager.getInstance().insert("INSERT INTO ...");
我的問題是:我是在右邊方法是共享一個連接還是更好地使用,例如10個連接保存在一個池中?
問題是,我總是得到一個爲ExecutionException(NullPointerException異常)與我目前的解決方案。
連接池會更好,看看這個:http://stackoverflow.com/questions/2835090/how-to-establish-a-connection-pool-in-jdbc – neohope