零基础java自学流程-Java语言高级305
作者:互联网
2. volatile关键字
这里就引出了一个新的关键字volatile
,它就可以保证多个线程操作共享数据内存中的数据是彼此可见的。底层是通过内存屏障
,我们可以理解volatile修饰的变量是在主存中的数据
直接操作。
读写变量都在 主存
中直接操作,进而保证多线程可见性。而且效率上要比同步锁高的多。
其实有说volatile效率底,是因为jvm底层有个指令排序,但使用volatile修饰的变量会有一个禁止指令重排
限制
3. 代码重构后
...
// 使用volatile修饰变量
private volatile boolean flag = false;
...
就可以解决多个线程操作共享数据彼此不可见问题
4. volatile和synchronized区别
volatile只是一个相比synchronized来说较为轻量级
的同步策略
- volatile 不具备
互斥性
- volatile 不能保证修饰变量的
原子性
后面我们在谈论下有关变量原子性和CAS算法问题
标签:java,变量,Java300,305,课程,volatile,修饰,Java 来源: https://blog.csdn.net/Limingmingaa/article/details/122014147