CAS
March 16, 2023 · View on GitHub
Unsafe
java 中的cas操作的都是基于Unsafe实现的,Unsafe使用JNI调用C++方法,提现平台相关的实现
Unsafe demo
// 获取一个 Unsafe实例
Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
Unsafe unsafe = (Unsafe) field.get(null);
System.out.println(unsafe);
cas 优点缺点
- cas 使用循序,减少了CPU上下文的切换,但是它不会让出CPU资源,如果循环时间过长,独占CPU,CPU不能参与其他计算
实现
基于CPU的cmpxchg指令
Java原子类
