在 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/