目录
cas-无锁同步的实现原理
ComparaAndSet/ComparaAndSwap操作
比较并交换/比较并设置
在给一个元素赋值的时候 首先查看内存中此元素的值是否已经改变(是否与期望值相同)
-
如果没有改变 则进行修改
-
如果进行了改变 则暂时不进行修改操作
2.1 保存内存中此元素现在的值(作为新的期望值)
2.2回到第1步并进行重试(自旋)
cas操作 由cpu保证其原子性
固上述两步操作也就作为一个整体被不可中断的执行 保证了线程安全
一种无锁操作
不需要挂起线程
在少量竞争的情况下大幅度提升性能
cas示意图
java中的cas
java中的cas操作由通过sun.misc.Unsafe类提供