- CAS即比较并设置,是一种无锁的、非阻塞的线程并发安全的技术
- CAS操作:设置新值时,首先将数据的当前值和预期原指进行比较,如果一致则更新为新值,否则不更新
- CAS和volatile结合实现了安全的原子行并发
- 在java中提供的源自数据类型就是这样做的
在cpu指令级的操作,即这种原子性操作由cpu直接提供
这个CAS的运行机制通俗说是这样;
第一步:先将原值取出来,保存下来
第二步:将该值进行操作,保存下来
第三步:比较现在的值与刚刚第一步保存下来的原值进行比较,如果相同(证明这期间没有被其他线程改变过),则将第二步的值更新给原值;若不相同,则证明这期间被发生的改变,则更新失败。
这里,我们故意改变了原值,这样就会发现更新失败,也就验证了这个例子。