java - 这三种同步是等价的吗?
问题描述
这个:
private final Object lock = new Object();
public void doSomething() {
synchronized (lock) {
// do something
}
}
与这个:
public void doSomething() {
synchronized (this) {
// do something
}
}
与这个:
public synchronized void doSomething() {
// do something
}
这是一个很棒的教程,它解释了不同的同步方式。
在为我阅读之后,您在代码中应用哪一个似乎只是一个品味问题,因为所有这些都有相同的结果,即:一次只有一个线程可以do something
。你能证实这一点吗?
我在 SO 上阅读了许多关于 Java 同步的线程,但是其中大多数都没有一般性地讨论它,而是针对给定的代码片段讨论它的特定方面。
我想开始的只是确保所有三个基本相同,我没有弄错基础知识,然后我可以继续了解更多关于性能方面的细微差异等等上...
解决方案
推荐阅读
- typescript - 单元测试 AWS Lambda CDK
- html - 如何在 VBA 中实现显示内联(html/css)?
- javascript - React JS 在数组中搜索(逐个字符)
- python - SQL查询多次返回结果 [已解决]
- python - 机器人发送大量消息 - Discord.Py
- c# - 将带有 LEFT JOIN 的 SQL 转换为 Linq(方法语法)
- python - 数据类的 IntEnum 属性的正确类型提示?
- reporting-services - Microsoft Reporting Services -- 如何将毫秒转换为 dd:mm:ss 格式
- swift - 如何实现这个 UICollectionView 单元格动画?
- vue.js - 错误页面在 Nuxt.js 的生产模式下不起作用