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

时间:2013-03-14 05:55:19

标签: java mysql multithreading jdbc

在我的应用程序中,多个线程试图将插入 MySQL 数据库。 executeUpdate 方法线程安全到使用?我该如何使用?

3 个答案:

答案 0 :(得分:6)

虽然executeUpdate方法本身可能是线程安全的,但预编译语句并非设计为同时使用。这是因为每个实例都存储您的参数,直到executeUpdate指示它将参数发送到MySQL。此外,由于事务是通过Connection对象进行管理的,因此在没有同步的情况下同时共享连接可能会在提交/回滚时给您带来不希望的行为。

为了使来自多个线程的插入同时工作,每个线程需要使用自己的Connection,并创建自己的PreparedStatement。在同一个数据库上并发使用多个预准备语句是线程安全的,因为并发是在RDBMS端管理的。

答案 1 :(得分:2)

Javadoc中没有任何内容表示Connection, PreparedStatement,ResultSet是线程安全的,因此他们的方法都不是。

答案 2 :(得分:0)

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

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