AtomicInteger内部的重要参数
- Unsafe
是CAS的核⼼类,由于Java⽅法⽆法直接访问底层系统,需要通过本地(native)⽅法来访问,Unsafe
相当于⼀个后⾯,基于该类可以直接操作特定内存的数据。Unsafe类存在于sum.misc包中,其内部⽅
法操作可以像C的指针⼀样直接操作内存,因为Java中CAS操作的执⾏依赖于Unsafe类的⽅法。
注意Unsafe类中的所有⽅法都是native修饰的,也就是说Unsafe类中的⽅法都直接调⽤操作系统底层资
源执⾏相应任务 - 变量valueOffset,表示该变量值在内存中的偏移地址,因为Unsafe就是根据内存偏移地址获取数
据的。 - 变量value⽤volatile修饰,保证了多线程之间的内存可⻅性。
AtomicInteger.getAndIncrement()
调⽤了Unsafe.getAndAddInt()
⽅法。Unsafe
类的⼤部分
⽅法都是native
的,⽤来像C语⾔⼀样从底层操作内存。