2013-03-14 68 views
7

在我的应用程序中,有多个线程试图插入MySQL的 database.Is 的executeUpdate方法线程安全使用?我怎样才能使这项工作?Java中的executeUpdate方法是线程安全的吗?

+2

看到这个.. http://stackoverflow.com/questions/8828202/is-executeupdate-method-in-java-thread-safe – Varun 2013-03-14 05:59:45

回答

6

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

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

2

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

0

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

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

相关问题