线程2将内存中的值A取出来变成了B,然后又改回成了A,没理解为什么线程2要做这种操作
比如内存中是2 ,线程B的工作内存中也是2,满足cas条件,所以B会把主存中的值修改为3,皆大欢喜,但是为什么又要改回2?
还有一个问题 假设线程1 做do操作时内存取出主存中的值var5=1 自己工作内存中的var2是也是var2 =1
但是在执行while(!thiscompareandswapint())之前 有另一个线程2 do取出的主存中的值var5 = 1 ,
自己工作内存中的var2 也是 var2 =1,所以满足cas并且他做了cas操作 , 再回来看线程1 他执行cas里的var5 还是do方法取出的1 ,所以也满足cas操作,但是时间上var5的值已经被线程2修改为2了,不懂这之中是什么道理 难道在cas操作中又从主存中取了一次var5么 ? 不然怎么保证一个线程do取var5 和 while这之间的时间一定是没问题的呢