1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

7 Commits

Author SHA1 Message Date
Guide
895bf6ee2a [docs update]picture url -> cdn 2023-08-14 09:05:59 +08:00
Guide
20255f0f05 [docs update]更改部分文章的文末内容 2023-08-07 18:56:33 +08:00
Mr.Hope
0159cf184d chore: format 2023-05-05 12:39:01 +08:00
Guide
a1a79a39fd [docs fix]Heap 初始化的时间复杂度 2023-04-22 10:34:42 +08:00
Guide
96a46f9b05 [docs add]乐观锁和悲观锁详解 2023-01-31 16:27:36 +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
guide
afee8d8a38 [docs fix]文件名规范&错误链接修复 2022-02-07 14:06:01 +08:00