本节介绍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指令实现原子操作的。