深入理解Atomic原子操作和volatile非原子性
2018-03-03 09:25
323 查看
原子操作可以理解为: 一个数,很多线程去同时修改它,不加sync同步锁,就可以保证修改结果是正确的
Atomic正是采用了CAS算法,所以可以在多线程环境下安全地操作对象。
volatile是Java的关键字,官方解释:volatile可以保证可见性、顺序性、一致性。
可见性:volatile修饰的对象在加载时会告知JVM,对象在CPU的缓存上对多个线程是同时可见的。
顺序性:这里有JVM的内存屏障的概念,简单理解为:可以保证线程操作对象时是顺序执行的,详细了解可以自行查阅。
一致性:可以保证多个线程读取数据时,读取到的数据是最新的。(注意读取的是最新的数据,但不保证写回时不会覆盖其他线程修改的结果)
Atomic正是采用了CAS算法,所以可以在多线程环境下安全地操作对象。
volatile是Java的关键字,官方解释:volatile可以保证可见性、顺序性、一致性。
可见性:volatile修饰的对象在加载时会告知JVM,对象在CPU的缓存上对多个线程是同时可见的。
顺序性:这里有JVM的内存屏障的概念,简单理解为:可以保证线程操作对象时是顺序执行的,详细了解可以自行查阅。
一致性:可以保证多个线程读取数据时,读取到的数据是最新的。(注意读取的是最新的数据,但不保证写回时不会覆盖其他线程修改的结果)
相关文章推荐
- 深入理解Volatile,synchronized,原子操作的必要性
- arm架构下的原子操作(atomic)函数源码分析
- C++并发实战16: std::atomic原子操作
- gcc原子操作,AtomicIntegerT , gcc编译选项(11)
- 原子/Atomic操作
- atomic_t原子操作
- 5.1 CUDA atomic原子操作
- 深入理解异或操作
- C++多线程-第一篇-Atomic-原子操作
- 原子操作atomic_t
- Hibernate深入理解----03操作Session缓存方法(flush、refresh、clear,事务隔离级别)
- 原子操作 atomic_t
- java.util.concurrent.atomic下的原子操作
- J.U.C atomic 数组,字段原子操作
- JAVA并发理解之原子操作
- boost中的atomic_int原子操作
- java.util.concurrent(JUC)的研究--》atomic原子操作--》happens-before法则
- atomic_inc 原子操作
- 深入理解Oracle的并行操作
- 深入理解DOM节点操作