两个线程同时执行i++100次

       i++这种操作并不是原子性的, 实际上它的操作是首先从内存中取出数据放在cpu寄存器中进行计算, 然后再将计算好的结果返回到内存中。
转载:https://blog.csdn.net/qq_41594146/article/details/87433065

可能的结果:最小为2,最大为200

最小为2线程执行过程

A线程和B线程都是第一次执行i++,cpu1和cpu2寄存器中的值为1(不写回内存),内存中的值为0

当A线程的i++执行到99次时,此时cpu1寄存器中值为99,内存为99

当B线程cpu2寄存器的1,写回内存覆盖内存的99,变成1

如果可以这样,那A线程也可以同样再覆盖一次B线程,最终结果就是2

若是i–执行100次,结果范围就是0到98了。

两个线程同时执行i++100次_第1张图片两个线程同时执行i++100次_第2张图片

你可能感兴趣的:(两个线程同时执行i++100次)