2013-03-14 69 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連接到數據庫。