i++递增操作是否具有原子性
来源:互联网 发布:滑雪板品牌知乎 编辑:程序博客网 时间:2024/05/14 12:33
i++的操作不是原子的,因为它不会作为一个不可分割的操作来执行。它实际包含了三个独立的操作,读取i的值,将值加1,然后将计算结果写入i。这是一个读取—修改—写入的操作序列,并且其结果状态依赖于之前的状态。
volatile的语义不足以确保递增操作的原子性,除非你能确保只有一个线程对变量执行写操作。
1、可以通过使用线程安全类,如
private final AtomicInterger i = new AtomicInteger(0);i.incrementAndGet();
2、当然也可以通过synchronized和Lock来保证其原子性。
0 0
- i++递增操作是否具有原子性
- i++是否是原子操作?
- i++和++i是否为原子操作
- redis mset是否具有原子性
- i++是否原子操作?并解释为什么???????
- i++是否原子操作?并解释为什么?
- i++是否原子操作?并解释为什么?
- i++是否原子操作?并解释为什么?
- 面试题【1】:i++是否原子操作?并解释为什么?
- i++ 是否为原子操作 和 Java中的volatile关键字
- 面试题【1】:i++是否原子操作?并解释为什么?
- 面试题【1】:i++是否原子操作?并解释为什么?
- i++是原子操作吗?怎么保证其原子性
- i++不是原子操作
- i++ 不是原子操作
- php操作memcache原子递增操作
- 验证java 递增不是原子操作
- java 递增不是原子操作-并发
- [置顶] startos 上 安装百度云客户端
- OC 类和对象 练习题
- CVE-2016-6662,研究人员披露 关键MySQL 0day漏洞
- storm 执行流程
- [置顶] startos 上 git 使用
- i++递增操作是否具有原子性
- [置顶] startos5.1 上FIREFOX 更新
- Android原生开发与HTML5交互
- [置顶] SSH公钥认证
- [置顶] qeephp3.0 发布了
- SpringEL详解及应用
- The remote name could not be resolved问题的解决方法
- [置顶] 只能通过chrome网上应用商店安装该程序”的解决方法
- RobotFramewok源代码分析