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