voliate的三个特点

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

voliate 如何实现线程安全

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

voliate读写过程

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

voliate可见性底层原理

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

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

线程安全 voliate相关推荐

  1. android字节转m,阿里钉钉,字节抖音 Android 面经分享!

    原标题:阿里钉钉,字节抖音 Android 面经分享! 微信改了推动机制,真爱请星标本公号 公众号回复加入BATcoder技术群BAT 原文链接:https://cloud.tencent.com/d ...

  2. 多线程编程指南 part 2

    多线程编程指南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA95054 U.S.A. 文件号码819–7051–10 2006 ...

  3. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)

    重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程").Qt GUI必须在这个线 ...

  4. Qt对话框的事件循环分析(子线程中不能创建UI窗体分析2)

    Qt事件机制 QT-UI 后端 重要: GUI线程和辅助线程 如前所述,每个程序在启动时都有一个线程.这个线程被称为"主线程"(在Qt应用程序中也称为"GUI线程&quo ...

  5. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

  6. voliate解决重排序

    voliate关键字的两个作用 1. 保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果.当一个线程向被volatile关键字修饰的变量 ...

  7. QT 多线程的实现方法以及GUI线程与其他线程间的通信

    GUI线程 Qt应用程序exec后就会生成一个线程,这个线程就是主线程,在GUI程序中也称为GUI线程.主线程也是唯一允许创建QApplication或QCoreAppliation对象,比并且可以对 ...

  8. voliate关键字

    voliate关键字详解: 1.内存模型相关概念 物理计算机内存访问图: 任何计算都是在CPU内处理的,那么也就必须涉及到数据读写,但是CPU每次都要和主内存交互读写数据效率太低了,于是有了高速缓存. ...

  9. java面试题:voliate底层原理——详解

    1. voliate底层原理 1.1 voliate变量的特点 可见性: 当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的. 有序性: volatile变量 ...

最新文章

  1. Spring Hibernate Mybatis配置详解
  2. linux shell 运算符 | || () {}
  3. 皮一皮:打完疫苗千万别睡太死...
  4. mysqlmediumtext,分享面经!
  5. 比较常用的几个正则表达式
  6. linux下动态链接问题(so文件的编写与调用)
  7. mongodb命令基础知识点
  8. crontab命令---Linux学习笔记
  9. 增强for循环:本质是迭代器
  10. linux u盘 启动报错,linux U盘启动系统的绘制
  11. reactrouter监听路由变化_前端路由三种模式
  12. Go 判断元素是否在切片中
  13. java对象存储管理
  14. Unity3D DoTween插件 的基本用法
  15. 【位运算经典应用】 N皇后问题
  16. android申请蓝牙动态权限,Android权限动态申请
  17. Pytorch:图像风格迁移
  18. Computer:C盘简介成功解决当Win10系统进行深度学习的时候发现系统C盘满了,教你如何正确卸载一些非必要的内容(提高磁盘内存和网速)
  19. 机器学习(周志华) 第五章神经网络
  20. dxdiag windows硬件检测

热门文章

  1. 【RK3399Pro学习笔记】十八、点亮LED灯(python、C语言、bash)
  2. 巴纳姆效应(暗示效应)
  3. 【Revit二次开发】标高
  4. oracle导入数据出现如下提示信息:variant conversion error for variable
  5. php 生成 webp,php webp
  6. application.properties
  7. zynq中mgtx应用_[ZYNQ入门宝典]GTX高速口带着IBERT一起玩(二)
  8. TIPTOP ERP 调试debug时如何查看临时表中的数据
  9. spss分析方法-游程检验(转载)
  10. python数组与矩阵运算