zoukankan      html  css  js  c++  java
  • volatile内存语义

    全面理解Java内存模型(JMM)及volatile关键字

    volatile的内存语义

    Volatile读写所建立的happens-before关系
    Volatile读写的内存语义


    锁: 获取和释放
    Volatile : 读 和 写

    happens-before
    当写一个volatile变量时,Java内存模型会把该线程对应的本地内存中的共享变量值刷新到主内存中
    当读一个volatile变量时,Java内存模型会把当前线程对应的本地内存中的共享变量置为无效,然后从主内存中读取共享变量。

    public class Demo {

    private int a;
    private volatile boolean flag;

    public void writer () {
    a = 1; // 1 happens-before
    flag = true; // 2 当写一个volatile变量时,Java内存模型会把该线程对应的本地内存中的共享变量值刷新到主内存中
    }

    public void reader () {
    if(flag) { // 3 当读一个volatile变量时,Java内存模型会把当前线程对应的本地内存中的共享变量置为无效,然后从主内存中读取共享变量。
    int b = a + 1; // 4
    System.out.println(b); // 5
    }
    }

    }

  • 相关阅读:
    第十三周学习进度条
    冲刺第四天
    第二天冲刺
    第三天冲刺
    第一天冲刺
    课下作业
    第十二周学习进度条
    课下作业
    webp与png、jpg相互转换
    Node疑难解决
  • 原文地址:https://www.cnblogs.com/gotodsp/p/8847022.html
Copyright © 2011-2022 走看看