![](https://img-blog.csdnimg.cn/direct/c103b92256f34b1b8f8177aa6e2fe3cb.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CAS
文章平均质量分 81
CAS
programmer_山风
程序员自媒体新星,欢迎关注,点赞收藏不迷路
展开
-
【JAVA并发】CAS(第二弹)
上文说到,CAS在更新值的时候,会判断要修改的A 是否和预期值相同,如果相同则更新新值。但会存在一种情况:线程 t2 在 t1 写回前,已经读取 A,修改成了 B,又修改成了 A,再写回时,满足要修改的值和预期值相同,更新成功。整个过程 t1 是无法知道的, t1 在更新时也能成功;而之后 t2 如果还想用 A,就读取不到了,因为已经是 t1 修改后的 B,这就造成了数据不一致的问题。产生ABA问题的代码示例: 目前在 JDK 的 atomic 包里提供了一个类 AtomicStampedReferen原创 2022-08-19 16:53:04 · 142 阅读 · 0 评论 -
【JAVA并发】CAS(第一弹)
一、什么是CAS CAS(Compare And Swap),比较并交换;它将内存位置的内容与给定值进行比较,只有在相同的情况下,才将该内存位置的内容修改为新的给定值。 二、Java中如何实现CAS 三、CAS在JUC下的应用 四、CAS存在的问题 1、ABA问题 2、循环时间长开销大 3、只能保证一个共享变量的原子操作 ........................原创 2022-08-14 17:49:12 · 276 阅读 · 0 评论