全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

什么是CAS

发布时间:2022-09-20 16:02:32
发布人:wjy

  1. CAS实现原理

  CAS是Compare And Swap的缩写,意思就是比较并交换。它是无锁化的实现,是经典的乐观锁。

  synchronized是一种悲观锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁就是不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁的机制就是CAS。

  CAS操作很简单,它包含三个操作数:内存地址V、预期原值A、新值B。

  先比较内存地址V处的值和预期原值A是否相等,如果相等就将内存地址V处更新为新值B。

  在配合循环使用时,若CAS操作失败,会循环执行或到达某个终止处。此操作配合循环使用时,又称为自旋锁的实现方式。

什么是CAS

  2. CAS存在的问题

  ① ABA问题 解决办法: - 加时间戳 - 加版本号

  ② 循环开销大 CAS是乐观锁,如果线程比较多,资源抢占激烈,命中率低的情况下,不断的循环会不断的消耗资源。实际上,可以设置最大循环数,达到最大循环数还没有占有资源就自动放弃,避免无限的循环。

  ③ 只能保证一个共享变量的原子操作。

相关文章

显著性目标检测和一般目标检测最本质的区别是什么区别?

显著性目标检测和一般目标检测最本质的区别是什么区别?

2023-10-15
在目标检测里single-shot和multi-shot的主要区别是什么?

在目标检测里single-shot和multi-shot的主要区别是什么?

2023-10-15
APP安全测试与普通B/S架构的渗透测试有什么区别?

APP安全测试与普通B/S架构的渗透测试有什么区别?

2023-10-15
什么是域控制器?

什么是域控制器?

2023-10-15

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取