我有一个公共方法同步的类(其他所有内容都是私有的,它没有子类)。这是否使它线程安全?性能如何 - 如果我在同步方法中拥有数据库访问权限,会有多严重?线程安全性和性能 - 使用数据库访问的同步方法
2
A
回答
1
这是否使它线程安全?
方法有所帮助,但他们只在一次一个方法提供线程安全。例如StringBuffer
是线程安全的,但前提是您只使用一种方法使其变得毫无用处。
另外Iterator
即使集合是线程安全的,通常也不是线程安全的,同样,您需要调用多个方法,这意味着释放调用之间的锁定。
性能怎么样 - 如果我在同步方法中有数据库访问,性能会有多严重?
一些之间根本没有和很多。然而,正确性应该是第一位的,如果错误的话速度有多快并不重要。
1
答案和往常一样:取决于很多细节。
如果你的班级有内部状态,它在方法调用之间进行,它将不是线程安全的。 -EDIT-如果一个类/对象是线程安全的,广义上说,如果由多个线程所做的任何调用序列都会在实例中创建一个不一致的状态。例如,如果你的类打开了一个JDBC连接,那么你可以在没有问题的情况下继承那个连接,但是,如果你从一个方法给出了所述连接的ResultSet,那将是而不是安全,因为当另一个线程请求来自同一连接的另一个结果集ResultSet中可能会变得无效 - /编辑 -
如果你把一个性能损失首先依赖于访问和多少时间在实际花费的数同步部分,即您的数据库访问需要多长时间。
相关问题
- 1. 线程安全SingletonHolder性能?
- 2. 同步访问非易失性字段线程安全吗?
- 3. 线程安全和性能之间
- 4. 线程安全访问数组和线程安全访问
- 5. Struts 2 Action访问静态方法时的线程安全性
- 6. 地址簿线程安全和性能
- 7. 同步数据库访问
- 8. Java:使用同步方法的类中的线程安全
- 9. sql.Result.LastInsertId()的线程安全性
- 10. 线程安全get(访问器方法)
- 11. 懒<T>性能线程安全
- 12. 线程安全的访问<T>性能
- 13. JAX-WS web服务线程安全和性能问题
- 14. 关于python中使用D-Bus异步方法调用的线程安全性
- 15. 离线访问令牌的安全性
- 16. Azure离线数据同步性能
- 17. 使属性线程安全
- 18. Java多线程:线程安全数据结构与同步方法
- 19. WPF数据绑定线程安全性?
- 20. 数据库安全性不够安全
- 21. 同步使用条件?我怎样才能使这个代码的性能和线程安全?
- 22. Bean中的方法属性可见性(线程安全吗?!)
- 23. 非同步静态方法和线程安全
- 24. 线程安全属性
- 25. 提高数据库访问的性能
- 26. ASP.NET:基于文件的数据库中的线程安全性
- 27. Spring安全性 - 基于属性访问控制器方法
- 28. 同步访问数据库和MySQL
- 29. C#中线程安全的数据库访问#
- 30. 战略线程安全的数据库访问
答案是否定的。线程安全不仅是关于种族条件,而且关于原子操作。 – CKing