Volatile变量与Atomic变量之间有什么区别?

时间:2012-03-15 15:30:31

标签: java atomic volatile

如果我们只考虑get / set方法,它们是否相同?或者说,以下两段代码是等价的吗?

private volatile boolean a;
public boolean isA(){
    return a;
}
public void setA(boolean a){
    this.a = a;
}


private AtomicBoolean a;
public boolean isA(){
    return a.get();
}
public void setA(boolean a){
    this.a.set(a);
}

1 个答案:

答案 0 :(得分:7)

Atomic *类的优点是它们的原子方法,如'getAndSet()'或'compareAndSet()',否则需要锁定。

如果您没有任何复合动作,例如只是想确保所有线程都看到'a'的最新值,那么volatile就足够了。