gpt4 book ai didi

java - JDBC:共享连接或使用连接池

转载 作者:行者123 更新时间:2023-11-29 20:30:43 25 4
gpt4 key购买 nike

在我的项目中,我运行了许多线程,用于并发从 Web 下载并插入 MySQL 数据库/从 MySQL 数据库中选择。我的数据库管理器如下所示:

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)。

最佳答案

在我的软件中,连接池没有带来预期的成功,因为我尝试从不同的连接将数据插入到同一个表中,这导致了死锁。因此,我继续实现连接池,它为 1 个表提供 1 个连接。

关于java - JDBC:共享连接或使用连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39090653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com