1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00
BaoPiao ea1b70d703
AtomicMarkableReference 是可以解决ABA问题的
因为AtomicMarkableReference是通过内部类Pair实现数据存储,每次替换都是通过Pair.of方法new一个类出来进行替换原先的值
如果ABA出现,那么最后的A肯定是一个新的Pair实例,即当前的A和之前的A不是同一个实例,当现场使用compareAndSet则会返回false
以下是compareAndSet的实现:
Pair<V> current = pair;
        return
            expectedReference == current.reference &&
            expectedMark == current.mark &&
            ((newReference == current.reference &&
              newMark == current.mark) ||
             casPair(current, Pair.of(newReference, newMark)));
2022-03-19 17:19:59 +08:00
..
2022-03-18 16:28:37 +08:00
2022-03-14 14:35:50 +08:00
2022-03-03 21:17:04 +08:00
2022-03-18 16:28:37 +08:00
2022-03-18 16:28:37 +08:00
2022-03-08 14:04:22 +08:00

home icon title heroImage heroText tagline actions
true home 主页 /logo.svg JavaGuide 「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide
text link type
开始阅读 /home/ primary
text link type
知识星球 /about-the-author/zhishixingqiu-two-years.md default

必看专栏

推荐阅读

  • Java学习路线 : 一份涵盖 Java 后端开发必备技能的学习路线!全面且清晰!
  • Java开源项目精选 :收集整理了 Gitee/Github 上非常棒的 Java 开源项目集合。Java 开发必备!
  • Java技术文章精选 : 精选一些和 Java 相关的优质技术文章,每一篇都值得你阅读 3 遍以上!
  • Java书单精选 : Java 后端开发值得一读的一些书籍。

PDF

公众号

最新更新会第一时间同步在公众号,强烈推荐大家关注一波!另外,公众号上有很多干货不会同步在线阅读网站。

我的公众号

联系我

交流/加群/互看朋友圈欢迎添加我的微信备注“Github”即可