关于AtomicInteger

AtomicInteger

JAVA原子操作的Interger类, 主要为解决多线程线程安全问题,今天拿来测试一下,测试代码如下:

public static void main(String[] args) {
        Set 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.
那么我的结论是: 说明生成的值是有重复的.
为什么会这样呢?

你可能感兴趣的:(关于AtomicInteger)