前言
AtomicInteger是java.util.concurrent.atomic 包下的一个原子类,该包下还有AtomicBoolean, AtomicLong,AtomicLongArray, AtomicReference等原子类,主要用于在高并发环境下,保证线程安全。
正文
1. 使用场景
我们都知道,a++ 这个操作在多线程并发执行的情况下,是非线程安全的。并且由于a++过程包含三个步骤,即非原子性,所以即使使用volatile也不能保证线程安全;而加锁(如Synchronized)又十分影响性能,因此这个时候非常适用使用AtomicInteger来实现变量的自增。
2. 案例代码
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerDemo implements Runnable {
private static final AtomicInteger atomicInteger = new AtomicInteger();
//增加指定数量
public void getAndAdd() {
atomicInteger.getAndAdd(-90);
}
//增加1
public void getAndIncrement() {
atomicInteger.getAndIncrement();
}
//减少1
public void getAndDecrement() {
atomicInteger.getAndDecr