美文网首页
volatile关键字

volatile关键字

作者: bangbang2 | 来源:发表于2020-07-21 15:45 被阅读0次

并发编程

并发编程三个特性:

1:原子性:synchronized 可以保证代码片段的原子性。

2:可见性:如果一个线程对共享变量进行修改,那么保证其他线程能看到修改后的最新值。volatile 关键字可以保证共享变量的可见性。

3:有序性,指令执行的先后顺序。volatile可以禁止指令的重排序

volatile关键字

要理解volatile,必须知道Java的内存模型,每一个线程本身有堆、栈、等,可以来当作工作内存,通过save将工作内存的东西写入到主内存,利用load来读取


image.png

一旦声明变量为volatile,当要将变量写入主存时,将本地变量刷新同步到主内存的共享变量中

读取数据时,直接从会将当前线程的工作内存失效,然后从主内存中读


image.png

啥叫happen-before?

如果A线程的写操作必须在B线程的读操作前进行,这就是happen-before

JMM必须保证A线程的写操作对B线程可见

例如:


image.png
image.png

volatile的底层是用lock来实现的

相关文章

网友评论

      本文标题:volatile关键字

      本文链接:https://www.haomeiwen.com/subject/nbwikktx.html