1、AtomicInteger基本介紹
java.util.concurrent.atomic 的包AtomicBoolean,AtomicInteger,AtomicLong,AtomicLongArray,AtomicReference等原子類的類,主要用于在高并發(fā)環(huán)境下的高效程序處理,幫助我們簡化同步處理.
在Java語言中,++i和i++操作并不是線程安全的,在使用的時候,不可避免的會用到synchronized關(guān)鍵字。而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();
//獲取當(dāng)前的值
? ? ? ? int a4 = ai.get();
//先相加再取值
? ? ? ? int a5 = ai.addAndGet(15);
//先取值再相加
? ? ? ? int a6 = ai.getAndAdd(15);
//改變當(dāng)前的值
? ? ? ? ai.set(55);
//獲得改變之前的值
? ? ? ? int a7 = ai.getAndSet(10);
//也就是說如果當(dāng)前值等于10,就改變當(dāng)前值為15,返回true反之返回false并且不對值進行修改
//相當(dāng)于
?// 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基本一致,這里不做演示