一段代码搞懂volatile

作者: 边城浪子_kv | 来源:发表于2020-02-25 22:38 被阅读0次

导读:注意每一行注释

package example.volatileDemo;

/**

* @Description:

* @Date:

*/

public class VolatileVisibility {

public static class TestData {

//        volatile int num = 0;//注意:这里不加volatile的话,num值不会被提交到工作内存,while将死循环

        int num =0;

        public void updateNum(){

            num =1;

        }

}

public static void main(String[] args) {

final TestData testData =new TestData();

        new Thread(new Runnable() {

        @Override

            public void run() {

            System.out.println("ChildThread num-->"+testData.num);

                try {

                    Thread.sleep(1000);

                }catch (InterruptedException e) {

                }

                testData.updateNum();

                System.out.println("ChildThread update num-->"+testData.num);

            }

        }).start();

        //while 循环里面不能有synchronize、sleep等操作,否则会重新读取主存到工作内存

        //println内部对当前输出内容做锁操作synchronize

        while (testData.num ==0){

//            System.out.println("in while loop:testData.num == 0");

//            try {

//                Thread.sleep(300);

//            } catch (InterruptedException e) {

//                e.printStackTrace();

//            }

//            int i = 1;

        }

        System.out.println("MainThread num-->" + testData.num);

    }

}

相关文章

  • 一段代码搞懂volatile

    导读:注意每一行注释 package example.volatileDemo; /** * @Descripti...

  • System.out.println()对于内存可见性的影响

    群友发了一段代码,说变量没有加volatile,但是依旧可见,代码大致如下:public class StopTh...

  • java学习笔记

    1.volatile 2.JMM(java内存模型) 3.volatile代码可见性 4.volatile代码不保...

  • Volatile关键字详解

    volatile是Java中一个非常重要的关键字,要想完全搞懂volatile的作用,需要一些额外的辅助知识。 要...

  • (3)线程的安全原理分析

    1.初识volatile 下面这段代码,演示了一个使用 volatile 以及没使用 volatile这个关键字,...

  • 深入解析volatile关键字

    1. 初步认识volatile 下面这段代码,演示了一个使用了volatile和没有使用volatile关键字对变...

  • 测试volatile时,System.out.println()

    很早以前,我测试volatile时写过一段代码,代码如下。 问题时在于很普通的一个输出语句。 在flag没有加vo...

  • 一文搞懂volatile

    最近很多朋友在面试,说这个问题被很多面试官问到。回想到自己上次的面试也有同样的经历,明明研究过很多遍,可是就是无法...

  • 一段代码搞懂Python的map/reduce

    map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数#依次作用#到序列的每个元素,并...

  • 什么时候使用volatile关键字?

    想必大家平时都见过volatile关键字,可是你知道什么时候需要使用volatile关键字吗? 直接看下面代码: ...

网友评论

    本文标题:一段代码搞懂volatile

    本文链接:https://www.haomeiwen.com/subject/eeccchtx.html