0
点赞
收藏
分享

微信扫一扫

JMM可见性

梦为马 2022-04-23 阅读 50
java

JMM



提示:以下是本篇文章正文内容,下面案例可供参考

一、JMM是什么?

JMM指的是java 内存模型。

二、JMM可见性

1.代码

代码如下(示例):

import java.util.concurrent.TimeUnit;

/**
 * 验证volatile的可见性
 *  1.1假如int mumber=0; number 变量没有添加volatile关键字修饰
 */

public class Test {
    public static void main(String[] args) {
        myDate myDate = new myDate();
        new Thread(()->{
           System.out.println(Thread.currentThread().getName()+"\t updated number="+myDate.number);
           //睡了8秒钟
            try {
                TimeUnit.SECONDS.sleep(8);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            myDate.bigNumber();
            System.out.println(Thread.currentThread().getName()+"\t updated number="+myDate.number);
        },"a1").start();
        while (myDate.number==0){
        }
        System.out.println("可见性触发");
    }
}
class  myDate {
  int number=0;
  public  void  bigNumber(){
      number=20;
  }
}

没有打印 可见性触发 程序一直在while 循环
在这里插入图片描述

2.加入在 int number 前面加入volatile关键字

代码如下(示例):

 volatile int number=0;

在这里插入图片描述
打印了 可见性触发 程序停止了


举报

相关推荐

0 条评论