码迷,mamicode.com
首页 > 其他好文 > 详细

i++问题

时间:2020-05-31 20:05:17      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:i++   步骤   i+1   sync   color   style   integer   出现   情况   

i++操作也可分为三个步骤:读i的值,进行i+1,设置i的值。
如果两个线程同时对i进行i++操作,会出现如下情况

  1. i设置值为0
  2. 线程A读到i的值为0
  3. 线程B也读到i的值为0
  4. 线程A执行了+1操作,将结果值1写入到内存
  5. 线程B执行了+1操作,将结果值1写入到内存
  6. 此时i进行了两次i++操作,但是结果却为1

在多线程环境下有什么方式可以避免这类情况发生?
解决方式有很多种,例如用AtomicInteger、CAS、synchronized等等。

 

参考:https://juejin.im/post/5b737b9b518825613d3894f4

i++问题

标签:i++   步骤   i+1   sync   color   style   integer   出现   情况   

原文地址:https://www.cnblogs.com/wangchao1995/p/13020468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!