2012-03-15 22 views
1

私たちがget/setメソッドを考慮したのと同じですか?つまり、次の2つのコードは同等ですか?Volatile変数とAtomic変数の違いは何ですか?

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

答えて

7

アトミック*クラスの利点は、ロックを必要とするgetAndSet()やcompareAndSet()などのアトミックメソッドです。

あなたに複合アクションがない場合、たとえばすべてのスレッドが 'a'の最新値を参照するようにしたい場合は、volatileで十分です。

+3

「++」と「 - 」は複合アクションであることに注意してくださいコードでは非常に簡潔ですが。 – yshavit

関連する問題