AtomicInteger 介绍

在 Java 语言中,++i 和 i++ 操作并不是线程安全的,在使用的时候,不可避免的会用到 synchronized 关键字。而 AtomicInteger 则通过一种线程安全的加减操作接口,类的内部维持了一个 volatile 类型的变量,增加变量值时,会调用 Unsafe 的 CAS 方法对变量进行增加操作。

使用示例

3 个线程同时对变量 count 进行加 1 操作。

public class Test {
    public static AtomicInteger count = new AtomicInteger(0);

    public static void main(String[] args) throws Exception{
        for (int i = 0; i < 3; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < 1000; i++) {
                        count.incrementAndGet();
                    }
                }
            }).start();
        }
        Thread.sleep(5 * 1000);
        System.out.println(count);
    }
}

结果:
3000

相关文章: