码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 经典面试题-volatile的作用


    • 线程安全要考虑三个方面:可见性、有序性、原子性

      • 可见性指,一个线程对共享变量修改,另一个线程能看到最新的结果
      • 有序性指,一个线程内代码按编写顺序执行
      • 原子性指,一个线程内多行代码以一个整体运行,期间不能有其它线程的代码插队
    • volatile只能保证共享变量的可见性和有序性,但是不能保证原子性;(volatile一般修饰变量)

    • 可见性
      起因:由于编译器优化(JIT)、或缓存优化、或 CPU 指令重排序优化导致的对共享变量所做的修改另外的线程看不到
      解决:用 volatile 修饰共享变量,能够防止编译器等优化发生,让一个线程对共享变量的修改对另一个线程可见

    可见性产生的原因错误理解:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rFCY4lyk-1658275285763)(en-resource://database/1580:1)]

    正确理解:
    在这里插入图片描述

    • 有序性(指令重排序的情况可以通过jcstress压测工具来测)
      起因:由于编译器优化、或缓存优化、或 CPU 指令重排序优化导致指令的实际执行顺序与编写顺序不一致
      解决:用 volatile 修饰共享变量会在读、写共享变量时加入不同的屏障,阻止其他读写操作越过屏障,从而达到阻止重排序的效果

    volatile 变量写加的屏障是阻止上方其它写操作越过屏障排到 volatile 变量写之下
    volatile 变量读加的屏障是阻止下方其它读操作越过屏障排到
    volatile 变量读之上volatile 读写加入的屏障只能防止同一线程内的指令重排

    • 原子性
      起因:多线程下,不同线程的指令发生了交错导致的共享变量的读写混乱
      解决:用悲观锁或乐观锁解决,volatile 并不能解决原子性
  • 相关阅读:
    第28节-PhotoShop基础课程-图层操作
    百趣生物CTO吴洪强受邀出席第十一届东方检验医学学术会议并做专题报告
    北大肖臻老师《区块链技术与应用》系列课程学习笔记[2]比特币的共识协议
    sass、vue(v-model、v-text、v-html、v-for、v-if、v-show、v-on、修饰符)
    阿里云服务器上安装rabbitmq流程
    无法访问org.springframework.core.env.EnvironmentCapable
    Java泛型中通配符的使用详解
    『C语言进阶』字符函数和内存函数(1)
    第一篇 如何选择深度学习主机
    Java RestTemplate使用TLS1.0(关闭SSL验证)
  • 原文地址:https://blog.csdn.net/xiaoshiguang3/article/details/125884547
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号