CAS
CAS : Compare And Swap (比较与交换)
CAS 操作包含三个操作数:内存位置(V)、预期原值(A)和新值(B)
当且仅当预期原值(A)与内存位置(V)的值相同时,才会将内存位置(V)的值更新为新值(B),否则不会更新值,不断循序重试;
class AtomicInteger {
private int value;
public int incrementAndGet() {
int oldValue;
int newValue;
do {
oldValue = value;
newValue = oldValue + 1;
} while (!compareAndSwap(oldValue, newValue));
return newValue;
}
private boolean compareAndSwap(int expectedValue, int newValue) {
// 这里是底层的 CAS 操作,如果当前值与预期值相同,就将其更新为新值
if (value == expectedValue) {
value = newValue;
return true;
}
return false;
}
}
应用场景
CAS: 适用于 读多写少, 比如:成绩更正、核酸录入
synchronized: 使用并发量不大且接受一定延迟场景, 比如:订单退费
性能分析
CAS: 无锁技术,性能高于synchronized同步锁
synchronized同步锁: 线程阻塞到唤醒会频繁 发生 线程上下文切换, 耗费性能
不积跬步,无以至千里;不积小流,无以成江海。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具