Java线程安全中的executeUpdate方法

时间:2012-01-11 23:27:35

标签: java multithreading jdbc

我有多个线程试图更新MySQL数据库?是使用线程安全的executeUpdate方法吗?

2 个答案:

答案 0 :(得分:3)

不,使用它不是线程安全的。

实际上,如果某个其他线程使用一个语句,然后另一个线程调用executeUpdate(),那么另一个线程的ResultSet(如果有的话)将被关闭。 JavaDoc for java.sql.Statement (of which PreparedStatement is a subtype)“Statement接口中的所有执行方法都会隐式关闭一个语句的当前ResultSet对象(如果存在开放的对象)。”

此外,executeUpdate()的给定实现不太可能被编写为多线程安全。

你应该同步所有语句和结果集的使用,或者建立多个连接,以便每个线程使用自己的JDBC Connection到数据库..我会推荐后者。

答案 1 :(得分:0)

考虑使用synchronized关键字创建更新方法,并考虑那里的并发线程死锁