這個類是線程安全的嗎?AtomicInteger vs synchronized getters/setters
是否有可能看到不一致的值?可以說最初a的值是80.線程1調用setA(100)
並進入函數但尚未調用a.set(100)
,線程2併發調用getA()
。線程2可以看到80嗎?
public class A {
private AtomicInteger a;
public int getA() {
return a.get()
}
public void setA(int newVal){
a.set(newVal);
}
}
我知道同步它將保證線程2看到100,但不確定與AtomicInteger。