是Java.sql';s getRow()线程安全吗?
假设我使用是Java.sql';s getRow()线程安全吗?,java,sql,mysql,multithreading,thread-safety,Java,Sql,Mysql,Multithreading,Thread Safety,假设我使用Java.sql将大量线程插入mysql数据库。执行插入操作后,我想知道刚才插入的记录的主键。我可以在insert查询返回的结果集上使用。但是,这个线程安全吗?或者我应该触发另一个select语句来查找刚才插入的记录的主键吗?我认为getRow()不应该是正确的。getId()将是我的选择,因为行ID可能与生成的主键不同 我不相信java.sql中的任何实现都是线程安全的;连接当然不是 确保在事务上下文中插入 你需要注意你的隔离度。如果您不知道这意味着什么,请检查javadocs fo
Java.sql
将大量线程插入mysql数据库。执行插入操作后,我想知道刚才插入的记录的主键。我可以在insert查询返回的结果集上使用。但是,这个线程安全吗?或者我应该触发另一个select语句来查找刚才插入的记录的主键吗?我认为getRow()不应该是正确的。getId()将是我的选择,因为行ID可能与生成的主键不同
我不相信java.sql中的任何实现都是线程安全的;连接当然不是
确保在事务上下文中插入
你需要注意你的隔离度。如果您不知道这意味着什么,请检查javadocs for java.sql.Connection。ResultSet不会在javadoc上宣传线程安全,因此假设它不是。如果你有10个线程插入,不知何故他们得到相同的结果集。。奇怪的事情会发生(或者至少不能保证是正确的) 但是,如果有10个线程各自执行插入,并且每个线程都有自己的结果集。。你很好。请记住,线程安全通常与共享同一对象有关,而不仅仅是同一个类。ArrayList不是线程安全的,但是如果您有10个不同的线程和10个不同的ArrayList,您就可以了。这里的ResultSet也一样