题目: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)
此时线
原创
2021-06-11 22:50:45 ·
2974 阅读 ·
0 评论