volatile关键字

目录

一.volatile 能保证内存可见性

1、volatile修饰的变量,能够保证“内存可见性”

2、演示实例


一.volatile 能保证内存可见性

1、volatile修饰的变量,能够保证“内存可见性”

代码在写入volatile修饰的变量的时候:

  • 改变线程工作内存中volatile变量副本的值;
  • 将改变后的副本的值从工作内存刷新到主内存;

代码在读取volatile修饰的变量的时候:

  • 从主内存中读取volatile变量的最新值到线程的工作内存中;
  • 从工作内存中volatile变量的副本;

2、演示实例

           以下代码创建了两个线程,线程thread01一直在运行,因为isQuit静态变量等于0,但是thread02线程可以修改静态变量isQuit的值。按道理在thread02线程修改变量的值后,thread01线程就会停止运行,但是运行代码后,修改完变量,thread01线程并没有停止运行。原因是thread02线程在修改完isQuit变量的值后,存储在线程的工作内存中,并没有刷新到主内存中,所以thread01线程并没有读取到修改后的变量值,一直在运行。

public class Volatile {
    private  static int isQuit=0;
    public static void main(String[] args) {
        Thread thread01 = new Thread(()->{
            while (isQuit==0){
                //循环啥也没有执行
                //意味着一秒钟就会执行很多次
            }
            System.out.println("thread01执行完毕...");
        });
        Thread thread02 = new Thread(()->{
            System.out.print("请输入isQuit的值:");
            Scanner scanner = new Scanner(System.in);
            isQuit = scanner.nextInt();
        });
        thread01.start();
        thread02.start();
    }
}

为了避免上述情况的发生,保证变量的内存可见性,引入volatile关键字。 

private volatile static int isQuit=0;//volatile关键字让变量isQuit的内存变成可见性的 

volatile 不保证原子性 

相关推荐

  1. volatile关键字

    2024-03-13 09:08:03       15 阅读
  2. volatile关键字

    2024-03-13 09:08:03       7 阅读
  3. volatile关键字详解

    2024-03-13 09:08:03       38 阅读
  4. 并发编程--Volatile关键字

    2024-03-13 09:08:03       23 阅读
  5. 介绍下volatile关键字

    2024-03-13 09:08:03       14 阅读

最近更新

  1. 前端导出pdf

    2024-03-13 09:08:03       1 阅读
  2. Knife4j的原理及应用详解(五)

    2024-03-13 09:08:03       1 阅读
  3. Day2--每日一练

    2024-03-13 09:08:03       1 阅读
  4. 东方博宜1626 - 暑假的旅游计划

    2024-03-13 09:08:03       0 阅读
  5. react小白面试不得不会的20个问题——第二篇

    2024-03-13 09:08:03       0 阅读
  6. 简单滤波算法伪码

    2024-03-13 09:08:03       0 阅读

热门阅读

  1. Django——数据库

    2024-03-13 09:08:03       21 阅读
  2. 浅谈C++友元函数

    2024-03-13 09:08:03       21 阅读
  3. Spring MVC AbstractTemplateViewResolver原理解析

    2024-03-13 09:08:03       21 阅读
  4. Ansible--详解

    2024-03-13 09:08:03       18 阅读
  5. AR实景儿童闯关游戏开发

    2024-03-13 09:08:03       24 阅读
  6. 力扣题库第8题:去重后的最长子串

    2024-03-13 09:08:03       18 阅读
  7. 「AI工程师」数据处理与分析-工作指导

    2024-03-13 09:08:03       25 阅读
  8. Kafka 设计之配额(Quatos)

    2024-03-13 09:08:03       16 阅读