7

在我的应用程序中,有多个线程试图插入MySQL数据库。executeUpdate方法使用线程安全吗?我怎样才能使它工作?

4

3 回答 3

6

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

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

于 2013-03-14T06:01:33.193 回答
2

Javadoc 中没有说明 a Connection,aPreparedStatement,或 aResultSet是线程安全的,因此它们的方法都不是。

于 2013-03-14T06:10:04.090 回答
0

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

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

于 2013-03-14T06:22:33.803 回答