volatile关键字及其原理+并发编程的三大特性:原子性/可见性/有序性
转载自:https://blog.****.net/emmmsuperdan/article/details/81564412
目录
6、 volatile(应用场景)和synchronized关键字的区别:(volatile修饰变量,synchronize修饰方法或者一个代码块)
首先了解一下并发编程的一些内容:
1、介绍线程之间读取数据的流程
2、原子性
3、可见性:
4、有序性:
5、开始介绍volatile关键字的作用:
6、 volatile(应用场景)和synchronized关键字的区别:(volatile修饰变量,synchronize修饰方法或者一个代码块)
7、上面三点的缩写
用双重判空(DCL):第一重判空:因为 synchronize是消耗性能较严重的操作,所以先判空看看到底要不要同步;
第二重就很显而易见了
8、 原理
2、有序性
从JVM底层来讲,volatile和9条happen-before原则都有一个叫“内存屏障”的东西,来保证线程实行的顺序。