【问题标题】:Is synchronized keyword in java merely syntax sugar? [duplicate]java中的同步关键字仅仅是语法糖吗? [复制]
【发布时间】:2012-01-12 15:16:36
【问题描述】:

可能重复:
synchronized block vs synchronized method?

大家好,我想知道 Snippet-A 只是 Snippet-B 的语法糖吗? :

片段A:

public synchronized void F() {
    //..code
}

片段 B:

public void F() {
    synchronized (this) {
        //..code
    }
}

或者说,上面两段代码到底有什么区别?

【问题讨论】:

标签: java syntax


【解决方案1】:

两者是相同的。请参阅§8.4.3.6Java Language Specification (JLS):

synchronized 方法在执行之前获取监视器。 [...] 对于实例方法, 与 this 关联的监视器(该方法所针对的对象 调用)被使用。

在 JLS 的示例中,这是:

synchronized void bump() { count++; }

据说效果和这个一样:

void bump() {
    synchronized (this) {
        count++;
    }
}

您的两个F 方法与示例bump 方法非常相似。

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 2011-01-17
    • 2011-03-08
    • 2012-01-07
    • 2012-01-13
    • 2019-06-12
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多