CAS(无锁优化,自旋)
2020-07-05 本文已影响0人
尉昌达
- Copmare And Set/Swap
- cas(V,E,N) ,cpu原语支持,中间不被打断。
V - 要改的值
E - 我期望的这个值是多少
N - 要设置的新值
可以这样理解:
if(V == E) {
V = N;
} else {
try again or fail;
}
CAS 内部用了Unsafe类去实现。
ABA问题:
如果是基础类型不会产生问题,引用类型 -> 加version来解决,