Java中的executeUpdate方法是线程安全的吗?

Java中的executeUpdate方法是线程安全的吗?,java,mysql,multithreading,jdbc,Java,Mysql,Multithreading,Jdbc,在我的应用程序中,有多个线程试图将插入到MySQL数据库中。使用executeUpdate方法是否线程安全?如何使这项工作正常?而executeUpdate方法本身可能是线程安全的,准备好的报表不能同时使用。这是因为每个实例都存储您的参数,直到executeUpdate指示它将参数发送到MySQL。此外,由于事务是通过连接对象管理的,因此在没有同步的情况下并发共享连接可能会在提交/回滚时产生不希望的行为 为了使来自多个线程的插入同时工作,每个线程需要使用自己的连接,并生成自己的PreparedS

在我的应用程序中,有多个线程试图将插入到MySQL数据库中。使用executeUpdate方法是否线程安全?如何使这项工作正常?

executeUpdate
方法本身可能是线程安全的,准备好的报表不能同时使用。这是因为每个实例都存储您的参数,直到
executeUpdate
指示它将参数发送到MySQL。此外,由于事务是通过
连接
对象管理的,因此在没有同步的情况下并发共享连接可能会在提交/回滚时产生不希望的行为


为了使来自多个线程的插入同时工作,每个线程需要使用自己的
连接
,并生成自己的
PreparedStatement
。在同一数据库上同时使用多个prepared语句是线程安全的,因为并发是在RDBMS端进行管理的。

Javadoc中没有任何说明
连接、
PreparedStatement、或
结果集是线程安全的,因此,它们的方法都不是。

executeUpdate()
对于多个线程来说是不安全的

您可以建立多个连接,这样每个线程都可以使用自己的JDBC连接到数据库。

请参见。。