CAS compareAndSwap 比较替换。 多线程环境下 实现同步功能的机制。
CAS(V,E,N)
三个参数:V 变量,E 预期值 N 新值。
Java中使用CAS 无锁机制,依靠硬件。
实核心代码就是一条带lock 前缀的 cmpxchg 的cpu指令
AVA中的CAS操作都是通过sun包下Unsafe类实现,而Unsafe类中的方法都是native方法,由JVM本地实现。
JNI访问。
CAS是一种系统原语,原语属于操作系统用语范畴,是由若干条指令组成的,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,也就是说CAS是一条CPU的原子指令,不会造成所谓的数据不一致问题。