深入理解Atomic原子操作和volatile非原子性

Posted stanljj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解Atomic原子操作和volatile非原子性相关的知识,希望对你有一定的参考价值。

原子操作可以理解为: 一个数,很多线程去同时修改它,不加sync同步锁,就可以保证修改结果是正确的

Atomic正是采用了CAS算法,所以可以在多线程环境下安全地操作对象。

volatile是Java的关键字,官方解释:volatile可以保证可见性、顺序性、一致性。

可见性:volatile修饰的对象在加载时会告知JVM,对象在CPU的缓存上对多个线程是同时可见的。

顺序性:这里有JVM的内存屏障的概念,简单理解为:可以保证线程操作对象时是顺序执行的,详细了解可以自行查阅。

一致性:可以保证多个线程读取数据时,读取到的数据是最新的。(注意读取的是最新的数据,但不保证写回时不会覆盖其他线程修改的结果)

以上是关于深入理解Atomic原子操作和volatile非原子性的主要内容,如果未能解决你的问题,请参考以下文章

6.并发编程--volatile

为什么volatile不能保证原子性而Atomic可以?

谈谈 synchronized 和 volatile 的区别

C++ atomic memory model和Arm实现方式

大厂P7 Java程序员高频面试题-9

多线程并发相关的几个重要基础知识点解析