【问题标题】:Wwhat's the difference between Volatile variable vs Atomic variable?易失变量与原子变量有什么区别?
【发布时间】:2012-03-15 15:30:31
【问题描述】:

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

【问题讨论】:

标签: java atomic volatile


【解决方案1】:

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

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

【讨论】:

  • 为了明确起见,请注意 ++-- 是复合动作,尽管它们在代码中非常简洁。
猜你喜欢
  • 2010-09-25
  • 2015-05-19
  • 1970-01-01
  • 2011-01-14
  • 2012-10-03
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
相关资源
最近更新 更多