我想知道如果一个私人布尔字段的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)。 –