可以說我有大量的線程使用Java.sql
插入到mysql數據庫中。在我執行插入操作後,我想知道剛剛插入的記錄的主鍵。我可以在插入查詢返回的ResultSet上使用getRow()。但是,這個線程安全嗎?或者我應該發射另一個選擇語句來查找我剛剛插入的記錄的主鍵?Java.sql的getRow()線程是否安全?
1
A
回答
3
ResultSet不會在javadoc上宣告爲線程安全的,因此假定它不是。如果你有10個線程插入,並且不知何故,他們會得到相同的結果集..奇怪的事情會發生(或至少不能保證是正確的)。
但是,如果你有10個線程,每個線程都做自己的插入,並且每個線程都有它自己的ResultSet ..你很好。請記住,線程安全通常與共享相同的對象而不僅僅是同一個類相關。 ArrayList不是線程安全的,但是如果你有10個不同的線程和10個不同的ArrayList,那麼你很好。這裏和ResultSet一樣。
0
我不認爲getRow()應該是正確的。 getId()將是我的選擇,因爲行ID可能與生成的主鍵不一樣。
我不相信java.sql中的任何實現是線程安全的;連接肯定不是。
務必在事務上下文中進行INSERT。
您需要注意您的隔離級別。如果您不知道這意味着什麼,請檢查javadocs是否爲java.sql.Connection。
相關問題
- 1. 是否Box.add()線程安全?
- 2. 是否mysql_insert_id線程安全?
- 3. NashornScriptEngine是否線程安全?
- 4. RegExp.MatchString是否線程安全?
- 5. SeekableStream是否線程安全?
- 6. 是否log4j線程安全?
- 7. NSPasteboard是否線程安全?
- 8. LIBSVM是否安全線程
- 9. epoll是否線程安全?
- 10. 是否NotifyPropertyChanged線程安全?
- 11. 線程是否表示線程安全?
- 12. 部分線程安全是否使Java類線程安全?
- 13. Android FragmentTransaction.replace()是否是線程安全的?
- 14. 是System.ServiceModel.Channels.BufferManager是否線程安全?
- 15. 是否是setlocale線程安全函數?
- 16. 進程線程是否安全?
- 17. Android中的java.util.Observable是否線程安全?
- 18. MyBatis中的selectKey線程是否安全?
- 19. AutoMapper中的Mapper.Map是否線程安全?
- 20. apache線程的apr_pool_destroy()是否安全?
- 21. TheadFactoryBuilder線程安全生成的ThreadFactory是否安全?
- 22. 存儲在線程安全集合線程中的對象是否安全?
- 23. 以下代碼是否線程安全
- 24. 檢查是否爲空線程安全?
- 25. C#委託是否線程安全?
- 26. Spring TransactionTemplate和SimpleJdbcTemplate是否線程安全?
- 27. Trove庫是否線程安全?
- 28. Ruby類方法是否線程安全?
- 29. mersenne twister線程是否安全cpp
- 30. 是否dequeueAll上mutable.SynchronizedQueue線程安全?