美文网首页
volatile和CAS的一些问题总结

volatile和CAS的一些问题总结

作者: 桭宝 | 来源:发表于2020-07-06 18:20 被阅读0次

1.volatile和CAS底层都使用lock前缀实现,有什么共通和区别的地方?

volatile通过lock保证了对应变量的读操作和写操作的可见性,读操作保证每次从内存加载最新的值,写操作保证变量直接写回内存。CAS通过lock保证的了整个比较和替换过程的原子性,compare和swap是两个操作,通过lock保证这两个操作的原子性和可见性,即每次都使用内存的最新值与期望值进行比较,替换后的新值直接写回内存,并且保证这两个组合操作的原子性。

2.CAS操作本身具有volatile语义,为什么AtomicInteger的自增操作需要同时使用CAS以及volatile关键词声明变量?

1.CAS操作能保证每次从内存读取最新值与期望值比较,但每次进行CAS操作前我们仍然需要从内存读取最新的值作为期望值进行比较。

2.多线程下需要通过volatile获取最新的值。

相关文章

网友评论

      本文标题:volatile和CAS的一些问题总结

      本文链接:https://www.haomeiwen.com/subject/vsxgqktx.html