2012-03-15 56 views
1

如果我们只考虑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); 
} 
+0

重复的http://stackoverflow.com/questions/3786825/java-volatile-boolean-vs-atomicboolean – skaffman 2012-03-15 15:39:56

回答

7

原子能*类的优点是它们的原子的方法,如“getAndSet()”或“compareAndSet()”,这原本需要锁定。

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

+3

只是为了明确指出,'++'和'--'是复合动作,甚至尽管它们在代码中非常简洁。 – yshavit 2012-03-15 16:08:30

相关问题