本節介紹AtomicInteger類源碼
首先,AtomicInteger類繼承了Number抽象類,Integer也繼承了Number抽象類。
內部維護了一個int數據,且被volatile修飾:
private volatile int value;
常用的方法:
1.getAndSet
/**
* Atomically sets to the given value and returns the old value.
*
* @param newValue the new value
* @return the previous value
*/
public final int getAndSet(int newValue) {
return unsafe.getAndSetInt(this, valueOffset, newValue);
}
2.getAndIncrement,也就是常用的i++操作
/**
* Atomically increments by one the current value.
*
* @return the previous value
*/
public final int getAndIncrement() {
return unsafe.getAndAddInt(this, valueOffset, 1);
}
由此可見,AtomicInteger使用的Unsafe的CAS指令實現原子操作的。