1、AtomicInteger基本介绍
java.util.concurrent.atomic 的包AtomicBoolean,AtomicInteger,AtomicLong,AtomicLongArray,AtomicReference等原子类的类,主要用于在高并发环境下的高效程序处理,帮助我们简化同步处理.
在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
2、AtomicInteger的基本常用方法
public class AtomicIntengerDemo {
public static void main(String[] args) {
AtomicInteger ai =new AtomicInteger(10);
//获取自增后的值
int a = ai.incrementAndGet();
//获取自增之前的值
int a1 = ai.getAndIncrement();
//获取自减后的值
int a2 = ai.decrementAndGet();
//获取自减前的值
int a3 = ai.getAndDecrement();
//获取当前的值
int a4 = ai.get();
//先相加再取值
int a5 = ai.addAndGet(15);
//先取值再相加
int a6 = ai.getAndAdd(15);
//改变当前的值
ai.set(55);
//获得改变之前的值
int a7 = ai.getAndSet(10);
//也就是说如果当前值等于10,就改变当前值为15,返回true反之返回false并且不对值进行修改
//相当于
// if (this == expect) {
// this = update
// return true;
//} else {
// return false;
//}
boolean a8 = ai.compareAndSet(10,15);
System.out.println(a8+"----"+ai.get());
}
}
AtomicBoolean,AtomicLong,AtomicLongArray 等操作类方法与AtomicInteger基本一致,这里不做演示