Java 多线程插入中的一个数据库连接,使用事务同时更新数据

Java 多线程插入中的一个数据库连接,使用事务同时更新数据,java,mysql,multithreading,Java,Mysql,Multithreading,我有点困惑,我知道事务隔离 假设我有3个线程同时使用一个数据库连接,它们使用事务来插入和更新这样的数据 new Thread(new Runnable() { Connection connection1 = null; @Override public void run() { try { connection1 = MysqlConnectionMa

我有点困惑,我知道事务隔离

假设我有3个线程同时使用一个数据库连接,它们使用事务来插入和更新这样的数据

new Thread(new Runnable() {
            Connection connection1 = null;
            @Override
            public void run() {
                try {
                    connection1 = MysqlConnectionManager.getConnection();
                    connection1.setAutoCommit(false);
                    //execute some insert or update queries
                    connection1.commit();
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    if(connection1 != null)
                        try {
                            connection1.setAutoCommit(true);
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                }
            }
        }).start();
假设其中一个线程有一个查询错误。这意味着
connection1.commit()将不执行并调用
connection1.setAutoCommit(true)而其他线程尚未调用提交。即使出现错误或是
connection1.setAutoCommit(true),其他线程是否会自动提交执行的查询是否不会影响其他线程中的连接?别忘了我只使用了一个连接


我该怎么做才能在没有任何问题的情况下使用这些线程


我一直在考虑在每个线程中创建一个新的连接,但我担心Mysql数据库会因为多个连接而叫嚣。

在服务器上使用datasources JNDI。这可能会对您有所帮助。如果您正在创建一个直接连接并在多个线程之间使用相同的连接,那么它肯定会影响其他线程。我该如何处理这些线程而不会出现任何问题?我刚刚读过关于数据源JNDI的文章,但它似乎是一个返回相同连接或新连接的连接工厂。但我正在寻找一个解决方案,我不必创建新的连接。