No59-【原】-Java并发编程23事之AtomicInteger的那点事儿
首先
请允许我做一次标题党(严肃脸),在这篇文章,咱不谈并发编程,也不论AtomicInteger,说点儿我初次使用AtomicInteger时的趣事儿。
我的第一次
话说当初在我看深入理解Java虚拟机一书的时候,看到了AtomicInteger这个类,它是并发条件下的原子自增运算,于是我就打开了IDEA,
输入这段示例代码,想看看运行结果:
1 | import java.util.concurrent.atomic.AtomicInteger; |
蛋是,奇迹发生了!运行结果是这样的:
race = 9994
ai = 9999
我的天,MD制杖,什么鬼,你跟我说结果不是10000?我把头给看下来,再多运行几次?好勒,次次结果都不一样,我的天!这难道是JDK版本的
问题?不对啊,我的是Ubuntu 16.04的JDK8.0,怎么可能有问题!难道是BUG了?我的天,我竟然发现了JDK的BUG,怎么办,好紧张。。。。。。
真相只有一个
最后,我才知道,原来是我太猴急了,在开启完全部线程之后,直接读取race和ai的值,这要能对就怪了,结果要是10000才是BUG呢。于是,
在输出结果直接加入Thread.sleep(500);
,让线程先睡会儿,然后再读取结果,对了!
这件事情告诉我们,细节决定成败。开个玩笑,我们下回再见!
感谢
感谢访问我的个人博客的朋友,如果您感觉本站对您搜索的问题有所帮助,并感觉对本站还满意的话,顶一下吧,希望您把本站分享给您的朋友!在此对您表示由衷的谢意! :-)
本文标题:No59-【原】-Java并发编程23事之AtomicInteger的那点事儿
文章作者:王用
发布时间:2016-08-19 23:11:51
原始链接:http://blog.54yongf.com/Java/59.html
许可协议: "署名-非商用-相同方式共享 3.0" 转载请保留原文链接及作者。