这个类是线程安全的吗?
有可能看到不一致的值吗?比如说,初始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是否也是如此。