我有一個公共方法同步的類(其他所有內容都是私有的,它沒有子類)。這是否使它線程安全?性能如何 - 如果我在同步方法中擁有數據庫訪問權限,會有多嚴重?線程安全性和性能 - 使用數據庫訪問的同步方法
2
A
回答
1
這是否使它線程安全?
方法有所幫助,但他們只在一次一個方法提供線程安全。例如StringBuffer
是線程安全的,但前提是您只使用一種方法使其變得毫無用處。
另外Iterator
即使集合是線程安全的,通常也不是線程安全的,同樣,您需要調用多個方法,這意味着釋放調用之間的鎖定。
性能怎麼樣 - 如果我在同步方法中有數據庫訪問,性能會有多嚴重?
一些之間根本沒有和很多。然而,正確性應該是第一位的,如果錯誤的話速度有多快並不重要。
1
答案和往常一樣:取決於很多細節。
如果你的班級有內部狀態,它在方法調用之間進行,它將不是線程安全的。 -EDIT-如果一個類/對象是線程安全的,廣義上說,如果由多個線程所做的任何調用序列都會在實例中創建一個不一致的狀態。例如,如果你的類打開了一個JDBC連接,那麼你可以在沒有問題的情況下繼承那個連接,但是,如果你從一個方法給出了所述連接的ResultSet,那將是而不是安全,因爲當另一個線程請求來自同一連接的另一個結果集ResultSet中可能會變得無效 - /編輯 -
如果你把一個性能損失首先依賴於訪問和多少時間在實際花費的數同步部分,即您的數據庫訪問需要多長時間。
相關問題
- 1. 同步訪問非易失性字段線程安全嗎?
- 2. 地址簿線程安全和性能
- 3. Struts 2 Action訪問靜態方法時的線程安全性
- 4. Java:使用同步方法的類中的線程安全
- 5. sql.Result.LastInsertId()的線程安全性
- 6. 線程安全get(訪問器方法)
- 7. 線程安全的訪問<T>性能
- 8. 關於python中使用D-Bus異步方法調用的線程安全性
- 9. JAX-WS web服務線程安全和性能問題
- 10. Azure離線數據同步性能
- 11. Java多線程:線程安全數據結構與同步方法
- 12. 使屬性線程安全
- 13. WPF數據綁定線程安全性?
- 14. 同步使用條件?我怎樣才能使這個代碼的性能和線程安全?
- 15. Bean中的方法屬性可見性(線程安全嗎?!)
- 16. 線程安全屬性
- 17. ASP.NET:基於文件的數據庫中的線程安全性
- 18. Spring安全性 - 基於屬性訪問控制器方法
- 19. 同步訪問數據庫和MySQL
- 20. 戰略線程安全的數據庫訪問
- 21. 無法使用Spring安全性使用數據庫登錄
- 22. WeakReference的線程安全性
- 23. 春季應用數據庫行級安全性最佳方法
- 24. 安全嗎?在庫中存儲數據庫訪問方法
- 25. 如何使使用隊列線程安全的異步方法
- 26. 使用lambda保留線程安全性
- 27. 線程安全屬性
- 28. Spring安全性能
- 29. 數據訪問和安全
- 30. 共享庫(dlopen)和庫靜態指針的線程安全性
答案是否定的。線程安全不僅是關於種族條件,而且關於原子操作。 – CKing