在我的应用程序中,有多个线程试图插入MySQL数据库。executeUpdate方法使用线程安全吗?我怎样才能使它工作?
问问题
613 次
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 回答