java - Java.sql 的 getRow() 线程安全吗?

标签 java sql mysql multithreading thread-safety

假设我有大量线程使用 Java.sql 插入到 mysql 数据库中。在我执行插入后,我想知道我刚刚插入的记录的主键。我可以使用 getRow()在插入查询返回的 ResultSet 上。但是,这个线程安全吗?或者我应该触发另一个选择语句来找到我刚刚插入的记录的主键吗?

最佳答案

ResultSet 没有在 javadoc 上宣传它是线程安全的,因此假设它不是。如果您插入了 10 个线程,并且它们以某种方式获得了相同的结果集。将会发生一些奇怪的事情(或者至少不能保证是正确的)。

但是,如果您有 10 个线程,每个线程都在执行自己的插入操作,并且每个线程都有自己的 ResultSet .. 你没问题。请记住,线程安全通常与共享同一个对象有关,而不仅仅是同一个类。 ArrayList 不是线程安全的,但是如果您有 10 个不同的线程和 10 个不同的 ArrayList,则没有问题。此处与 ResultSet 相同。

关于java - Java.sql 的 getRow() 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920158/

相关文章:

java - 如何使用android :inputType ="textPassword"在密码EditText中输入非英文文本

java - 如何在子类对象上调用父类(super class)方法?

java - 从另一个 war 文件访问一个 war 文件的页面?

sql - 使用 JPA/Hibernate 进行国际化的最优雅的解决方案?

sql - 使用 SQL 排除记录

php - Yii 交易和验证问题

mysql - 从 Cassandra 中提取数据以加载到关系数据库中的机制

php - 如何在保存数据之前在输入表单上运行脚本

Java文件上传小程序——需要建议

sql - (MSSQL) 按给定修改日期求和列