CAS(Compare and Swap) 是利用底层硬件平台特性,实现原子性操作的算法,Java 1.5 以后 JUC(java.util.concurrent) 实现主要以此为基础;找了不少资料以下记录一下个人对于 CAS 的理解(部分资料 copy 的) 一、CAS 简述 从最基础的 Java 中的 i++ 操作来说,i++ 并非原子操作,实质上相当于先读取 i 值,然后在内存中创建缓存变量保存 ++ 后结果,最后写会变量 i;而在这期间 i 变量都可能被其他线程读或写,从而造成线程安全性问题 CAS 算法大致原理是:在对变量进行计算之前(如 ++ 操作),首先读取原变量值,称为 旧的预期值 A,然后在更新之前再获取当前内存...