volatile 保证线程可见性 禁止指令重排序(cpu)
DCL Double check lock
MESI cpu 级别的缓存一致性协议
单例模式
new 一个对象 分三步
1. 给对象申请内存 a=0
2. 给对象初始化 a=8
3. 给对象赋值
CAS 重灾区 乐观锁
无锁优化 如果是基础类型 无所谓 引用类型就有问题 cpu 元语支持
cas (V, expected,newValue)
if(v==expected)
v=newValue
otherwise try again or fail
unsafe == c++的指针
c -> malloc free c++ -> new delete
ABA 问题 ----------