首页 > Java > java教程 > 什么时候应该避免在 Java 中使用'synchronized(this)”?

什么时候应该避免在 Java 中使用'synchronized(this)”?

Susan Sarandon
发布: 2024-12-16 04:14:14
原创
433 人浏览过

When Should You Avoid Using `synchronized(this)` in Java?

在Java中避免synchronized(this)?

是否在Java中避免synchronized(this)的问题在Java内部一直存在争论。社区,支持者提倡使用私有锁引用。本文旨在提供现实世界的示例,其中避免使用同步(this)是更好的选择,否则也足够了。

避免同步(this)的原因

那些反对使用synchronized(this)的人认为它:

  • 暴露了外部代码可能窃取或使用的锁恶意地。
  • 可以通过导致同一类中的所有同步方法锁定同一锁来降低吞吐量。
  • 揭示不必要的实现细节。

同步(this)的参数

其他人认为同步(this):

  • 是一个常用的习惯用法,易于理解且安全。
  • 不应仅仅因为它是代码中的错误的一部分或由于它的原因而避免关于多线程编程的误解。

现实世界示例

  • 敏感数据的安全访问:如果一个类包含只能由授权代码访问的敏感数据,则使用私有锁限制谁可以访问它,防止恶意代码窃取引用。
  • 差异锁定:有时,类的不同部分需要独立加锁以增强并发性。使用私有锁可以实现更细粒度的锁定,从而防止不相关操作上不必要的同步。
  • 关注点分离:在某些情况下,可能需要将同步机制封装在辅助类中,将同步细节与业务分离

结论

虽然在某些情况下避免使用synchronized(this)可能更好,但它不应该被视为一揽子规则。如果synchronized(this)的好处超过了潜在的缺点,那么应该使用它来确保线程安全和代码正确性。最好的方法是仔细考虑代码的具体要求并相应地选择合适的同步机制。

以上是什么时候应该避免在 Java 中使用'synchronized(this)”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板