我有多个线程尝试更新 MySQL 数据库?使用executeUpdate方法是线程安全的吗?
不,它的使用不是线程安全的。
事实上,如果某个其他线程使用了一条语句,然后另一个线程调用了executeUpdate(),那么另一个线程的ResultSet
s(如果有)将被关闭。java.sql.Statement 的 JavaDoc(PreparedStatement 是其中的子类型)“如果存在打开的 ResultSet 对象,Statement 接口中的所有执行方法都会隐式关闭该语句的当前 ResultSet 对象。”
此外,给定的实现不太可能executeUpdate()
将被编写为多线程安全的。
您应该同步语句的所有使用和生成的结果集,或者建立多个连接,以便每个线程使用自己的 JDBCConnection
到数据库..我会推荐后者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)