假设所有属性都不是long
or double
,读取volatile
对对象的引用是否保证原子读取其属性的最新值?
这是一个具体的例子。
public class Foo {
private int bar;
public int getBar() {
return this.bar;
}
public void setBar(int bar) {
this.bar = bar;
}
}
public class Baz {
private volatile Foo foo;
}
线程 A 可以随时写入Foo
的Bar
属性。线程 B 只能读取Foo
的Bar
属性。如果线程 BBar
通过 访问属性Baz
,它会读取 的最新值Bar
吗?