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

13 Commits

Author SHA1 Message Date
ChaplinLittleJenius
f7abbcc539
Update atomic-classes.md
fix:修复需求说明错误
经过实测,实际上字段必须满足的是 volatile int 且不为 private,访问修饰符只要不是 private 即可
2025-03-08 11:18:37 +08:00
Guide
4f87ee846e [docs update]完善问题:面向对象和面向过程的区别 2024-07-21 12:56:33 +08:00
Guide
b392abd1e7 Update atomic-classes.md 2024-07-17 13:31:32 +08:00
Mr.Hope
f9a11d3399 chore: update deps 2023-12-30 17:14:13 +08:00
Mr.Hope
7ea99a88d7 style: update linter 2023-10-27 06:44:02 +08:00
Guide
6469d6c097 [docs update]markdown格式规范 2023-10-08 16:33:50 +08:00
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