java - 同步语句和独立的非同步方法

标签 java methods synchronization

在 Java 在线文档中,我找到了以下示例:

public void addName(String name) {
    synchronized(this) {
        lastName = name;
        nameCount++;
    }
    nameList.add(name);
}

他们说:

Without synchronized statements, there would have to be a separate, unsynchronized method for the sole purpose of invoking nameList.add.

有人明白他们的意思吗?

出处可查here .

最佳答案

文章首先介绍了synchronized方法——所以到目前为止,读者可能认为同步的粒度单位是单个方法。

事实上,如果同步块(synchronized block)/语句不存在,上面的例子只能这样完成:

public void addName(String name) {
    doSyncAdd(name);
    nameList.add(name);
}

private synchronized void doSyncAdd(String name) {
    lastName = name;
    nameCount++;
}

因此,同步语句意味着您可以将需要同步的相关代码保持内联。而不是必须声明一个单独的方法,这既污染了 namespace 又使代码流碎片化。 (好吧,适度分解方法是好的,但有选择更好。)

关于java - 同步语句和独立的非同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173567/

相关文章:

java - 无需凭据即可使用 Google 云端硬盘下载公共(public)文件

java - ArrayIndexOutofBoundsException 错误但不知道为什么

javascript - 等待注入(inject)的 <script> 元素中的 javascript 代码完成执行

ios - 我应该为 iOS 待办事项应用程序使用 Core Data 吗?

stack-trace - 如何获取 Java 中当前的堆栈跟踪?

java - MVC——循环依赖

java - Jackson - 使用动态 key 反序列化 json

c# - 字符串方法不从数据库中的表返回值

java - 我的方法应该迭代很多次但不是,为什么?

android - 如何使用AlertDialog的返回值