当前位置:   article > 正文

线程安全 voliate_voliate 线程安全

voliate 线程安全

voliate的三个特点

1.可见性:一个线程修改了voliate修饰的值后,对于其他线程可见;
2.有序性:保证临界区代码执行有序性;
3.受限原子性:不保证原子性。

voliate 如何实现线程安全

  1. 实现变量可见性
  2. 进制指令重排序

voliate读写过程

读:当一个线程读取被voliate修饰的值时,JVM将本地设置无效,从主内存读取共享变量
写:当一个线程修改voliate修饰的值时,JVM将本地内存刷新到主内存

voliate可见性底层原理

借用了CPU的lock指令
1.写voliate时,处理器将缓存写回主内存
2.一个处理器缓存写回到主内存导致其他处理器缓存失败

基于CPU缓存一致性协议,JVM实现了voliate可见性,但由于总线嗅探机制,不断监听总线,大量使用voliate会引起总线风暴。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/44981
推荐阅读
相关标签
  

闽ICP备14008679号