https://www.bilibili.com/video/BV1Sa4y1P7Vd

Untitled

compare and swap

先从比较和交换的角度,从 Java 端聊到 native 方案,然后讲讲 c++ 中的 cmpschg 指令,再聊聊 lock 指令保证 cmpschg 指令的原子性

比较和交换:

OpenJDK 源码中:unsafe 类

四个参数:哪个对象,哪个属性的内存偏移量,oldValue,newValue

compareAndSwapObject(Object var1, long var2, Object var4, Object var5);

native 方法就是直接调用本地依赖库 c++ 中的方法

CAS 底层通过 lock 指令保证多核 OS 的并发安全