假设一个类有两个变量:a和b。 现在在该类中,我正在更新Synchnonized块中的两个变量的值,并再次以不同的方法更新这两个变量的值。
现在有两个线程正在访问这个类。它会导致数据不一致错误???
例如:
class ABC {
int a = 9, b = 18;
public void method1() {
synchronized (this) {
a += 10;
b += 12;
}
}
public void method2() {
a += 18;
b += 23;
}
}
两个线程一次访问此对象。会发生什么 ?是否会在这里发生数据一致性?
答案 0 :(得分:0)
当一个线程正在运行method2()
时,没有任何内容阻止另一个线程通过method1()
。由于+=
不是原子操作,因此您会遇到并发问题。