Java--CAS问题汇总
关于Java内的CAS,应该说它是整个c.u.t包的基石。
全称(compare and swqp),比较和交换,应该说看过源码的,尤其是最简单atomicInteger的,会发现它其实就是在自旋的基础上去更新某一个值,是一种乐观锁,它认为这个变量读大于写。
至于例子,我就引用原有的一篇博客,里面有测试例子。
今天要补充的是关于CAS底层的一些分析。
网上截取了一段关于CAS底层方法。
需要注意的是在执行cmpxchg方法时,这个方法就是执行change的方法,也就是写方法。当执行写方法时,加了一个LOCK信号。
关于LOCK信号是CAS需要关注的底层原理。
总结下:
1. 存在锁总线的操作,保证了写操作的原子性。
2.禁止了指令重排序。
3.会及时刷新数据到内存中。