java内存模型之volatile变量

 2019-12-10 16:10  阅读(1020)
文章分类:Java Core

### 一 volatile关键字的作用 ### 1 保证任意单个变量读/写的原子性,即使是64位的long/double变量,也能保证其读/写具备原子性,但是在类似vlolatile变量的复合操作上,volatile关键字将不具备原子性 2 保证变量的可见性,即对一个变量的读,总能看到其他任意线程对该vlolatile变量的最后写入 ### 二 volatile关键字的内存语义 ### 1 读的内存语义 当线程读一个volatile变量的时候,首先JMM会把线程工作内存中的(也就是线程的本地内存)的变量置为无效,然后从主内存中读取共享变量,这样线程本地内存中中与主内存中的共享变量的值将一致 2 写的内存语义 当写一个共享变量的时候,线程会将对应的本地内存中的变量值刷新同步到主内存 总结: 线程A写一个共享变量,实际上是向接下来要读这个变量的某个线程发送一条(线程A对这个变量做了修改的)消息。 线程B读一个共享变量,实际上是接收到了之前其他线程发出的对这个共享做了修改的消息。 线程A对volatile变量写,线程B读共享变量读,实际上是线程A和线程B通过主内存进行通信 ### ### ### 三 volatile关键字底层原理 ###

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> java内存模型之volatile变量

相关推荐