AtomicInteger
JAVA原子操作的Interger类, 主要为解决多线程线程安全问题,今天拿来测试一下,测试代码如下:
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
AtomicInteger ai = new AtomicInteger(0);
ExecutorService es = Executors.newCachedThreadPool();
for (int i=0; i<2000000; i++){
es.submit(() -> {
set.add(ai.getAndIncrement());
});
}
es.shutdown();
System.out.println(set.size());
}
运行结果显示并不是2000000.
那么我的结论是: 说明生成的值是有重复的.
为什么会这样呢?