volatile简介可见性和有序性的保证
发布时间
阅读量:
阅读量
volatile简介
volatile是JVM提供的最小权值同步机制(相较于synchronized而言,它要轻量很多)
当一个变量定义为volatile后,其具备两种特性:
-
该变量在所有线程中的可见性设置
-
可见性设置:每当一个线程对该变量进行修改时,新的值能够立即被其他所有线程访问。
-
避免指令顺序的重新排列优化
-
指令顺序调整:JVM在执行优化时会对其变量赋值等操作进行一系列改进
-
特别提示:这种重排序优化属于机器级的操作范畴,并不在Java源代码层面实施
可见性
普遍变量
首先,为什么普通变量不能做到可见性呢?
这里需要引入JMM(Java内存模型)。
什么是JMM?
因为各个平台的内存模型存在差异,在一个平台上运行良好的程序在另一个平台上可能会遇到问题。例如,在一个平台上的程序可以在并发情况下正常运行,在另一个平台则可能出现错误。因此必须为每个平台设计特定的标准以确保一致性。JVM通过建立了标准以消除这些由操作系统带来的内存访问影响,并引入了自身独特的JAVA内存模型(即JMM)来实现这一目标
JMM简介
JMM的知识点较多,这里只做简单介绍。
首先上图

还没有任何评论哟~
