扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java并发高频面试题 > 68.什么是CAS?

CAS即CompareAndSwap,翻译成中文即比较并替换。Java中可以通过CAS操作来保证原子性,原子性就是不可被中断的一些列操作或者一个操作,简单来说就是一系列操作,要么全部完成,要么失败,不能被中断。

CAS主要包含三个参数(V,expect,update), V 表示要更新的变量(内存值)、 expect 表示预期值(旧值)、 update 表示新值。算法流程是首先比较 V 和 expect 的值,如果相等,将 update 值赋值给V,如果不相等说明有其他线程对该变量做了更新。这个参数有的地方也会用(V,A,B)表示,其中A表示预期值,B表示新值。

当多个线程同时操作一个共享变量时,只有一个线程可以对变量进行成功更新,其他线程均会失败,但是失败并不会被挂起,进行再次尝试,也就是自旋。Java中的自旋锁就是利用CAS来实现的。


点击面试手册,获取本站面试手册PDF完整版