假設所有屬性都不是long
或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
屬性。如果線程B通過Baz
訪問Bar
屬性,它是否會讀取最新值Bar
?
不變性會讓你的生活在這裏變得更容易。 – SLaks