【发布时间】:2011-09-27 10:15:42
【问题描述】:
我偶然发现了AtomicInteger 的来源并意识到了这一点
new AtomicInteger(0).equals(new AtomicInteger(0))
计算为false。
这是为什么?它是与并发问题相关的一些“防御性”设计选择吗?如果是这样,如果采用不同的实施方式会出现什么问题?
(我确实意识到我可以改用 get 和 ==。)
【问题讨论】:
-
我想知道 Doug Lea 出现并给我们答案的可能性有多大。
-
相当苗条 :-) 我最近在暑期学校遇到了他,他开始说 “我不会费心去看那些不会影响数百万人的事情” i> :-)
-
@aioobe:很好,但我也尝试过
==,但它不相等,因为我们检查的是引用而不是实际值,但很明显,在这种情况下对象的引用会有所不同if(new AtomicInteger(0)==(new AtomicInteger(0))){System.out.println("equals");}不打印等于。
标签: java concurrency equals