当前位置: 首页 > 面试题库 >

Java线程中的executeUpdate方法是否安全

郑燕七
2023-03-14
问题内容

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


问题答案:

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

实际上,如果其他某个线程使用一条语句,然后另一个线程调用executeUpdate(),则另一个线程的ResultSets(如果有的话)将被关闭。“
javadoc.sql.Statement的JavaDoc(PreparedStatement是其子类型)

”如果存在打开的语句,那么Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象。“

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

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



 类似资料:
  • 问题内容: 在我的Java项目中,我需要以多种方式使用TreeMap。我发现ConcurrentSkipListMap是我需要的,但是某些方法不是线程安全的。其中之一- containsKey(Object key)。以多种方式使用此方法的典型解决方案是什么?在我的程序中,我需要放置不会替换旧密钥的密钥,如果不可能的话,我将放置另一个密钥而不会获得唯一密钥。因为我不会丢失信息,所以应该使用哪种构造

  • 问题内容: 我知道文档说明该对象是线程安全的,但这是否意味着从所有方法对其进行的所有访问都是线程安全的?因此,如果我一次从多个线程中调用它,并且一次在同一实例上调用它,会不会发生什么不好的事情? 问题答案: 快速答案是肯定的,它们是线程安全的。但是不要让它在那里… 首先,一个小的内部管理是一个接口,任何不是线程安全的实现都将破坏书面合同。您包括的链接是指,它具有一定的灵巧性。 您包含的链接引起了一

  • 看起来它工作得很好,但我想知道我是否必须确保新代码需要线程安全?这里有什么意见吗?抱歉用了假名字,提前致谢。

  • IBM的支持指出,Class.GetAnnotation的实现不是线程安全的。 与其他JVM实现(例如,OpenJDK)相比,我们可以看到它们以线程安全的方式实现类方法。IBM JVM是一个闭源JVM,他们确实会发布一些源代码和他们的JVM一起,但无论什么时候他们的类实现是否线程安全,都不足以做出明确的判断。 类文档没有清楚地说明它的方法何时是线程安全的。那么,将类方法(特别是getAnnotat

  • 问题内容: 我一直在假设线程安全也不是线程安全,但是在最近的一次讨论中,一位同事告诉我线程安全。 因此,我做了一些研究,却一无所获。很多人认为它是线程安全的,很多人认为它不是线程安全的。而且,最重要的是,文档没有以一种或另一种方式说任何话,不是为了,甚至不是。 那是什么呢? 问题答案: 这是指向Java 7 中Calendar和GregorianCalendar的源代码的链接。 如果阅读该代码,您

  • 有一次,我被印上了“祝贺”,有一次,我被印上了“站台”。