Volatile关键字原子性、可见性及有序性保障机制.pdfVIP

  • 0
  • 0
  • 约1.48千字
  • 约 2页
  • 2026-04-27 发布于北京
  • 举报

Volatile关键字原子性、可见性及有序性保障机制.pdf

volatile对原子性的保证真的是非常的有限,其实主要就是32位jvm中的long/double类型

变量的赋值操作是不具备原子性的,加上volatile就可以保证原子性了

volatilebooleanisRunning=true;

线程1:

Release屏障

isRunning=false;

Store屏障=对于之前的讲解,更进了一步,原理,没有过多的牵扯到内存屏障的一些东

西,可见性和有序性,主要都是基于各种内存屏障来实现的

线程2:

Load屏障

while(isRunning){

Acquire屏障

//代码逻辑

}

在volatile变量写操作的前面会加入一个Release屏障,然后在会加入一个Store屏障,

这样就可以保证volatile写跟Release屏障之前的任何读写操作都不会指令重排,然后Store

屏障保证了,写完数据,立执行flush处理器缓存的操作

在volatile变量读操作的前面会加入一个Load屏障,这样就可以保证对这个变量的时,

如果被别的处理器修改过了,必须得从其他处理器的高速缓存(或者主内存)中加载到自己

本地高速缓存里,保证读到的是数据;在会加入一个Acquir

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档