题目:i的初始值为0,i++在两个线程里面分别执行100次,能得到最大值和最小值分别是多少

最大值: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值