1.在修改完number值以后,while循环并没有检查到

复制代码
package com.mydemo;

import java.util.concurrent.TimeUnit;

public class MyData {
    public  int number=0;
    public void add_to_60(){

        this.number=60;
    }


}

class VolatileDemo{
    public static void main(String[] args) {

        MyData myData = new MyData();
        new Thread(()->{
            System.out.println(Thread.currentThread().getName() + "\t come in");
            try {
                            TimeUnit.SECONDS.sleep(3);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

            myData.add_to_60();
            System.out.println(Thread.currentThread().getName() + "\t update number value:" + myData.number);
        },"AAA").start();

        while (myData.number==0){}
        System.out.println(Thread.currentThread().getName() + "\t mission is over"+ myData.number);

    }



}
复制代码

执行结果:

 

 

 2.用volatile修饰number后

复制代码
package com.mydemo;

import java.util.concurrent.TimeUnit;

public class MyData {
    public  volatile int number=0;
    public void add_to_60(){

        this.number=60;
    }


}

class VolatileDemo{
    public static void main(String[] args) {

        MyData myData = new MyData();
        new Thread(()->{
            System.out.println(Thread.currentThread().getName() + "\t come in");
            try {
                            TimeUnit.SECONDS.sleep(3);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

            myData.add_to_60();
            System.out.println(Thread.currentThread().getName() + "\t update number value:" + myData.number);
        },"AAA").start();

        while (myData.number==0){}
        System.out.println(Thread.currentThread().getName() + "\t mission is over"+ myData.number);

    }



}
复制代码

执行结果:

 

 数值被修改后被while判断到

 

posted on   upupup-999  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!



点击右上角即可分享
微信分享提示