前言:
摒弃segment利用CAS算法,底层依然对数组+链表+红黑树 不离不弃,为了并发、添加了些对象内部类
CAS:CompareAndSwap
乐观锁的宝贝甜蜜饯
比较并替换,3个操作数:内存地址V 、旧的预期值A 、要更新的目标值B:当且仅当V==A才V=B
CPU硬件指令保证:JNI(Java Native Interface)调用native方法(c++硬件级指令)jdk提供unsafe类执行
Unsafe
类是CAS实现的核心,封装了一些类似于C++中指针的东西,类中的方法都是native、原子
compareAndSwapInt、Atomic::cmpxchg、lock前缀 :CAS"自旋"
Java并发包原子操作类(Atomic开头)AtomicInteger借助C来调用CPU底层指令
lock前缀
单处理器没有必要加lock前缀,多核情况下添加lock
1、确保对内存读-改-写原子执行,锁定单个缓存行中的内存区域:缓存锁定ÿ