zoukankan      html  css  js  c++  java
  • Volatile的特征

    Volatile的特征:

    A、禁止指令重排(有例外)原理: 内存屏障/内存栅栏
    B、可见性  原理:happens-before

    对于volatile修饰的变量,jvm虚拟机只是保证从主内存加载到线程工作内存的值是最新的。、

    Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性,不能保证线程安全

    volatile只能保证变量的可见性,无法保证对变量的操作的原子性。

    Volatile的内存语义:

    当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存(可见性)。

     这里写图片描述

    当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。

     这里写图片描述

    volatile 用于 单例模式 双重检查  禁止指令重排序优化,保证了instance变量被赋值的时候对象已经是初始化过的

  • 相关阅读:
    文件系统
    用户
    Kali Linux命令(3)
    Kali Linux命令(2)
    Kali Linux命令(1)
    文件上传测试 bugku
    Seay源代码审计系统
    实验吧 BrainFuck
    zigbee学习之路(十一):看门狗
    zigbee学习之路(十):串口(接收)
  • 原文地址:https://www.cnblogs.com/stanljj/p/8491848.html
Copyright © 2011-2022 走看看