繁体   English   中英

MySQL JDBC Driver 多线程并发执行命令,最好使用线程池?

[英]MySQL JDBC Driver multiple threads executing commands concurrently, best to use thread pooling?

目前我已经创建了一系列并行运行的自动化测试(Selenium 和 Java); 即 x5 测试将通过单独的线程同时运行。

一些测试将与目标数据库(MySQL)交互并依次执行特定的 SQL 写入命令; 即直接通过数据库创建新用户。

似乎在并发运行测试时并不是每个线程都在写入数据库,即使 SQL 写入语句是正确的并且通过将线程数减少到 1,我不再遇到这个问题。

我的代码:

public static void createDatabaseConnection() {
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://" + Db_Settings.getAddress() + ":" + Db_Settings.portNumber
                    + "/" + Db_Settings.getDbEnvironment() + "?" + Db_Settings.ssl, Db_Settings.getDbUsername(), Db_Settings.getDbPassword());
    } catch (Exception e) {
        System.out.println("Exception: " + e.getStackTrace() + ", " + e.getMessage());
    }
}

public static void closeDatabaseConnection() {
    try {
        con.close();
    } catch (Exception e) {
        System.out.println("Exception: " + e.getStackTrace() + ", " + e.getMessage());
    }
}

示例命令(组合); 可以同时被 x2+ 个单独的线程调用:

DbManager.createDatabaseConnection();
DbManager.executeSqlUpdateStatement(Account.createAccount_Sql_Script());
DbManager.closeDatabaseConnection();

关于在通过以下方式建立数据库连接时是否应该使用线程池或同步的任何建议:MySQL JDBC 驱动程序?

您可以使用 Hikari jdbc 池库。 它允许您创建多个连接到数据库并并行运行 sql 查询而没有连接冲突,也没有连接泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM