volitile

作者: 81bad73e9053 | 来源:发表于2016-09-07 11:29 被阅读36次

1.volatile的定义和实现原理

对一个volatile进行写操作时对应的汇编指令

lock addl $0x0,(%esp)

lock前缀的指令在多核处理器会引发两件事情
1.将当前处理器缓存行的数据写回到主内存
2.这个写回主内存的操作会使其他在cpu里缓存了该内存地址的数据无效
为了提高处理速度,处理器不直接和内存进行通信,而是将系统内存的数据读到局部内存后在进行操作,但是操作完并不知道什么时候回写到主内存。
如果对声明了volatile的变量进行写操作,jvm会向处理器发送一条lock前缀的指令,将这个变量所在的缓存的数据回写到主内存,同时为了保证其它处理器缓存一致,就会实现缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己的缓存是否过期,当处理器发现在即缓存行所对应的内存被修改,将会将当前处理器的缓存设置成无效状态,当前处理器对这个数据进行操作的时候会重新从系统内存把数据读到处理器缓存中。

相关文章

  • volitile

    1.volatile的定义和实现原理 对一个volatile进行写操作时对应的汇编指令 lock前缀的指令在多核处...

  • Volitile工作原理

    Volitile修饰的变量会被加一个lock指令,这个指令做两件事情, 1.在变量改变之后,会立刻从cpu高速缓存...

  • volitile和synchronized

    参考文章:https://zhuanlan.zhihu.com/p/133851347[https://zhuan...

  • 线程池工具类以及Future使用

    1、线程池工具 采用单利模式以及double check + volitile,保证线程安全,然后交给spring...

  • C中的线程锁,以及android的懒人封装

    在java中,我们通常通过volitile、synchronized关键字来保证变量、函数或代码段在多线程中数据的...

  • Lock接口

    1.实现原理 AQS,队列同步器。通过volitile变量state和CAS实现的一个双端队列,子类需要重写try...

  • 可见性通过volitile保证随笔

    可见性: 可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。要了解...

网友评论

      本文标题:volitile

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