CAS : Compare and swap( V,Expected,NewValue)
cas有点像自旋锁,在初始阶段不会上锁,只有在具体操作时,才去判断
.CPU原语支持
if V == E
V = NEW
ELSE
try again or fail
//CPU原语保证在判断值相等和赋值之间是不会被打断的
原理: 哪期望值和原来的值比较,如果相同,就可以更值;否则try again or fail
AtomicInteger (使用CAS锁)
问题: ABA 问题?
原来的值,被改变了,然后就改回去了,如果判断
使用version
A 1.0
B 2.0
C 3.0
cas(version)
Unsafe类 – todo