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