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