public final int getAndAddInt(Object var1, long var2, int var4) {
int var5;
do {
// var5主内存中的值,var1是线程工作内存中的值
var5 = this.getIntVolatile(var1, var2);
} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
return var5;
}
var5主内存中的值,var1是线程工作内存中的值,比较的是var1.value和var5是否相同,不同继续获取主内存中的值与线程工作内存中的值比较。问题:假设var1是3,主内存中的值被其他线程操作自增变为4,5,6 … 这边是不是会一直循环下去,直到主内存中的值同步到线程工作内存中,且没有其他线程操作?还是说这里面哪一步是有同步工作内存和主内存的操作?