很多次我看到这样的结构:
class OneTimeWriter {
volatile Object o;
void synchronized set(Object o) {
if(this.o == null) this.o = o;
}
Object get() {
return this.o;
}
}
我们在其自身的开头/结尾有读/写 membars synchronized
。那么,我们可以volatile
从 o 中删除吗,因为synchronized
它本身有释放/获取语义?