题目描述
题目:重现i++的原子性问题,并解决原子性问题
解题思路
并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。
原子性:一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行。
可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。
有序性:程序执行的顺序按照代码的先后顺序执行。
我们先来说i++的原子性问题
/**
* i++原子性问题:
* eg: int i=10;
* i=i++;//?会等于多少
* i++操作步骤:
* int temp =i;
* i = i +1;
* return temp;
* 所以i++分为三步:“读--》改--》写”
* <p>
* 说到i++,肯定要顺便说下++i,++i的操作步骤:
* int i=10;
* return i=i+1;
*
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141806.html