最大值:200
最小值:2
最小值分析(图片参考牛客网大佬)
个人理解
操作流程1(线程1)
线程1先读i=0,紧接着线程1 i++ 99次 ,此时i的值为99,但未写入到内存中
操作流程2(线程2)
因为操作1未写入到内存中,内存中i=0,线程2从内存中取i=0
操作流程3(线程1)
线程1将i=99写入到内存中,此时内存的值为99
操作流程4(线程2)
线程2此时使用的i是自己的i值,不是内存中i=99这个值.执行i++后,i=1,并将i=1写入到内存中,覆盖了之前内存i=99的值
操作流程5(线程1)
此时线程1读内存的i=1,执行i++,得到i=2 。加上操作流程3中线程1的99次i++操作和本次i++操作,共计为100次操作,但未将i=2写入到内存中
操作流程6(线程2)
线程2按照操作4中的i=1,执行i++99次后,得到i=100。加上操作4中一次i++操作,正好是100次操作。i++在两个线程里面分别执行100次操作结束。
操作流程7(线程2)
线程2将i=100写回内存中 ,此时内存i=100
操作流程8(线程1)
线程1将i=2写回内存,覆盖掉内存中i=100 ,故i=2