zoukankan      html  css  js  c++  java
  • JMM和volatile

    1、volatile

    2、JMM

    3、代码示例

    package com.yanshu;
    
    class MyNmuber{
        volatile int number=10;
        public void addTo50(){ this.number=50; }
    
    }
    
    /**
     * @author :yangyuanyuan
     * @description:TODO
     * @date :2021/1/28 15:36
     * JMM=可见性(通知机制)
     * 两个线程 mian线程和A线程,A线程修改numbe的值
     */
    public class test5 {
        public static void main(String[] args) {
            MyNmuber myNmuber = new MyNmuber();
    
            new Thread(()->{
                System.out.println(Thread.currentThread().getName()+"	  come in ");
                //暂停一会线程
                try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }
                myNmuber.addTo50();//将10修改为50
                System.out.println(Thread.currentThread().getName()+"	  update number,number value: "+myNmuber.number);
    
            }
          ,"A"  ).start();
    
            while (myNmuber.number==10){
                //需要有一种通知机制告诉main线程,number已经修改成50,跳出while
            }
    
            System.out.println(Thread.currentThread().getName()+"	 massion is over");
        }
    
    }

    number前不加volatile关键字时。main线程一种在while循环中等待

    加上volatile关键字时

  • 相关阅读:
    省选后蛤蛤纪事
    About me
    第一篇blog
    震惊!山东一高中生学习锯木板,原因竟是...
    斯特林数相关
    省选后数学学习
    SDOI 2020游记
    奶茶推荐
    Goodbye 2019
    golang 并发锁的陷阱
  • 原文地址:https://www.cnblogs.com/qfdy123/p/14340302.html
Copyright © 2011-2022 走看看