mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
因为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)));
home | icon | title | heroImage | heroText | tagline | actions | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
true | home | 主页 | /logo.svg | JavaGuide | 「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide! |
|
必看专栏
- 《Java 面试指北》 : 与 JavaGuide 开源版的内容互补!
- 《手写 RPC 框架》 : 从零开始基于 Netty+Kyro+Zookeeper 实现一个简易的 RPC 框架。
推荐阅读
- Java学习路线 : 一份涵盖 Java 后端开发必备技能的学习路线!全面且清晰!
- Java开源项目精选 :收集整理了 Gitee/Github 上非常棒的 Java 开源项目集合。Java 开发必备!
- Java技术文章精选 : 精选一些和 Java 相关的优质技术文章,每一篇都值得你阅读 3 遍以上!
- Java书单精选 : Java 后端开发值得一读的一些书籍。
公众号
最新更新会第一时间同步在公众号,强烈推荐大家关注一波!另外,公众号上有很多干货不会同步在线阅读网站。
联系我
交流/加群/互看朋友圈,欢迎添加我的微信(备注“Github”即可)。