微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

当前位置: 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来实现的。

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


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