Advertisement

volatile简介可见性和有序性的保证

阅读量:

volatile简介

volatile是JVM提供的最小权值同步机制(相较于synchronized而言,它要轻量很多)

当一个变量定义为volatile后,其具备两种特性:

  • 该变量在所有线程中的可见性设置

  • 可见性设置:每当一个线程对该变量进行修改时,新的值能够立即被其他所有线程访问。

  • 避免指令顺序的重新排列优化

  • 指令顺序调整:JVM在执行优化时会对其变量赋值等操作进行一系列改进

  • 特别提示:这种重排序优化属于机器级的操作范畴,并不在Java源代码层面实施

可见性

普遍变量

首先,为什么普通变量不能做到可见性呢?

这里需要引入JMM(Java内存模型)。

什么是JMM?

因为各个平台的内存模型存在差异,在一个平台上运行良好的程序在另一个平台上可能会遇到问题。例如,在一个平台上的程序可以在并发情况下正常运行,在另一个平台则可能出现错误。因此必须为每个平台设计特定的标准以确保一致性。JVM通过建立了标准以消除这些由操作系统带来的内存访问影响,并引入了自身独特的JAVA内存模型(即JMM)来实现这一目标

JMM简介

JMM的知识点较多,这里只做简单介绍。

首先上图

![在这里插入图片描述](https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/

全部评论 (0)

还没有任何评论哟~