一 CAS作用介绍
1.1 CAS作用
CAS有3个操作数,位置内存值V,旧的预期值A,要修改的更新值B,如果内存值V和预期值相同则,内存值改为B,否则什么都不做。当它重来重试的这种行为称为-自旋。
CAS是一条cpu的原子指令,不会造成所谓的数据不一致问题。CAS是靠硬件实现的从而在硬件层面提升效率,最底层还是交给硬件来保证原子性和可见性。
2.案例代码
1.2 unsafe类
在java中CAS操作的执行依赖于Unsafe类的方法,其中Unsafe类存在于sun.misc包中,其内部方法操作可以像C的指针一样直接操作内存。
注意unsafe类中的所有方法都是native修饰的,也就是说unsafe类中的方法都直接调用操作系统底层资源,执行相应任务。
AtomicInteger类主要利用CAS+voltile和native方法来保证原子操作,从而避免synchronized的高开销,执行效率大为提升。