CAS是compare and swap的缩写即我们所说的比较交换。cas是一种基于锁的操作而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住等一个之前获得锁的线程释放锁之后下一个线程才可以访问。而乐观锁采取了一种宽泛的态度通过某种方式不加锁来处理资源比如通过给记录加version来获取数据性能较悲观锁有很大的提高。CAS 操作包含三个操作数 —— 内存位置V、预期原值A和新值(B)。如果内存地址里面的值和A的值是一样的那么就将内存里面的值更新成B。CAS是通过无限循环来获取数据的如果在第一轮循环中a线程获取地址里面的值被b线程修改了那么a线程需要自旋到下次循环才有可能机会执行。CAS 是 compare and swap 的简写即比较并交换。它是指一种操作机制而不是某个具体的类或方法。在 Java 平台上对这种操作进行了包装。在 Unsafe 类中调用代码如下unsafe.compareAndSwapInt(this, valueOffset, expect, update);它需要三个参数分别是内存位置 V旧的预期值 A 和新的值 B。1、先从内存位置读取到值然后和预期值A比较。2、如果相等则将此内存位置的值改为新值 B返回 true。3、如果不相等说明和其他线程冲突了则不做任何改变返回 false。这种机制在不阻塞其他线程的情况下避免了并发冲突比独占锁的性能高很多。 CAS 在 Java 的原子类和并发包中有大量使用。