设为首页 加入收藏

TOP

关于Java自增操作的原子性
2014-11-24 12:29:27 来源: 作者: 【 】 浏览:1
Tags:关于 Java 操作 原子

最近在工作中和一个同事因为自增是不是原子性操作争论的面红耳赤,那Java的自增操作到底是不是原子性操作呢,答案是否的,即Java的自增操作不是原子性操作。


1.首先我们先看看Bruce Eckel是怎么说的:


  In the JVM an increment is not atomic and involves both a read and a write. (via the latest Java Performance Tuning Newsletter)


  意思很简单,就是说在jvm中自增不是原子性操作,它包含一个读操作和一个写操作。


2.以上可能还不能让你信服,要想让人心服口服,就必须用代码说话。正如FaceBook的文化一样:代码赢得争论。那我们就看一段代码:


  以下的代码是用100个线程同时执行自增操作,每个线程自增100次,如果自增操作是原子性操作的话,那么执行完amount的值为10,000。运行代码之后,你会发现amount的值小于10,000,这就说明自增操作不是原子性的


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在Ubuntu 12.04 下编译GCC 4.7 下一篇Linux汇编---函数调用过程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HyperText Transfer (2025-12-26 07:20:48)
·半小时搞懂 HTTP、HT (2025-12-26 07:20:42)
·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)