这个类是线程安全的吗?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。