Volatile的内存语义

2018-07-30  本文已影响0人  WillReading

内存语义

内存语义指的是:
在多线程或处理器中用来控制存取共享内存位置,或者说是在更高层次上共享变量的处理逻辑。

volatile的happens-before原则

volatile变量原则:对一个volatile域的写,happens-before于任意后续对这个volatile域的读。

volatile的内存语义

volatile的内存语义即是用来保证volatile的happens-before原则。

volatile内存语义的实现

为了实现volatile的内存语义,编译器在生成字节码时,会在指令序列中插入内存屏障来禁止特定类型的处理器重排序。

内存屏障是一种barrier指令类型,它导致CPU或编译器对barrier指令前后发出的内存操作执行顺序约束。也就是说,在barrier之前的内存操作保证在barrier之后的内存操作之前执行。

内存屏障有以下4种:

为了实现volatile内存语义,Java编译器会这样使用内存屏障:


内存屏障 ---实现---> 内存语义 ---保证---> happens-before原则

参考资料

上一篇下一篇

猜你喜欢

热点阅读