我想知道如果一個私人布爾字段的getter方法強制其他線程獲取最新的更新值?這是揮發性領域的替代品嗎? 例如:getter方法是Java中volatile的替代方法嗎?
Class A {
private boolean flag;
public boolean getFlag() {
return this.flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
VS
Class B {
public volatile boolean flag;
}
編輯:這是真的,整個對象是由一個線程(包括私營領域)的緩存,這樣,當我打電話,吸氣它會返回緩存的私人領域?
號這兩個是等效沒有辦法。你爲什麼會認爲他們是?從邏輯上講,如果'volatile'與getter相同,那麼爲什麼我們需要一個全新的語言關鍵字呢? –
正如我所說,我認爲getter強制線程獲得未緩存的值。爲什麼不吸取最後一次更新的值? –
也許您需要查看[JLS](http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.3.1.4)。 –