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()+"\t  come in ");
            //暂停一会线程
            try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }
            myNmuber.addTo50();//将10修改为50
            System.out.println(Thread.currentThread().getName()+"\t  update number,number value: "+myNmuber.number);
        }
      ,"A"  ).start();
        while (myNmuber.number==10){
            //需要有一种通知机制告诉main线程,number已经修改成50,跳出while
        }
        System.out.println(Thread.currentThread().getName()+"\t massion is over");
    }
}
number前不加volatile关键字时。main线程一种在while循环中等待

加上volatile关键字时

JMM和volatile的更多相关文章
- 全面理解Java内存模型(JMM)及volatile关键字(转载)
		关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java类加载器(ClassLoad ... 
- 全面理解Java内存模型(JMM)及volatile关键字(转)
		原文地址:全面理解Java内存模型(JMM)及volatile关键字 关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型( ... 
- 深入理解Java内存模型JMM与volatile关键字
		深入理解Java内存模型JMM与volatile关键字 多核并发缓存架构 Java内存模型 Java线程内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java线程内存模型是标准化的,屏蔽 ... 
- JMM和Volatile底层原理分析
		JMM和volatile分析 1.JMM:Java Memory Model,java线程内存模型 JMM:它是一个抽象的概念,描述的是线程和内存间的通信,java线程内存模型和CPU缓存模型类似,它 ... 
- 自己动手写把”锁”之---JMM和volatile
		一.JAVA内存模型 关于Java内存模型的文章,网上真的数不胜数.在这里我就不打算说的很详细.很严谨了.只力求大家能更好的理解和运用,为后边的技术点做铺垫. 内存模型并不是Java独有的概念,而 ... 
- 全面理解Java内存模型(JMM)及volatile关键字
		[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/72772461 出自[zejian ... 
- java架构之路(多线程)JMM和volatile关键字
		说到JMM大家一定很陌生,被我们所熟知的一定是jvm虚拟机,而我们今天讲的JMM和JVM虚拟机没有半毛钱关系,千万不要把JMM的任何事情联想到JVM,把JMM当做一个完全新的事物去理解和认识. 我们先 ... 
- java - jmm之volatile特性
		volatile是什么? volatile是JVM提供的一种轻量级的同步机制,其具有三个特性. 保证可见性 不保证原子性 禁止指令重排 保证可见性 JMM(java memory model)中文翻译 ... 
- 深入理解 Java 内存模型 JMM 与 volatile
		Java 内存模型(Java Memory Model,简称 JMM)是一种抽象的概念,并不真实存在,它描述的是一组规范或者规则,通过这种规范定义了程序中各个变量(包括实例字段.静态字段和构成数组对象 ... 
随机推荐
- llinux文件相关指令
			一---导读 首先我们来看这样一个小案例,假设张三要出差,按照 这样的路线进行 北京->上海,之后回到北京.再按照北京->天津->石家庄这样的路线进行出差(北京是根据地).假设现在张 ... 
- Linux下docker中安装宝塔面板教程
			本人云服务器,装的cent os7.6,在cent os7.6已装了docker,没装的可以借鉴 https://www.cnblogs.com/xiaoyige/p/12673076.html 1. ... 
- 吃透论文——推荐算法不可不看的DeepFM模型
			大家好,我们今天继续来剖析一些推荐广告领域的论文. 今天选择的这篇叫做DeepFM: A Factorization-Machine based Neural Network for CTR Pred ... 
- VRay for SketchUp渲染图黑原因及解决方案
			很多人都遇到用Vray for SketchUp云渲染的时候,渲染出来的图片是全黑或者是局部是黑色, 这是什么原因呢? 1.有一种情况是,SketchUp的文件储存机制和其他的软件有些不同,它是把模型 ... 
- 【Linux】java.io.IOException: error=24, Too many open files解决
			linux系统中执行java程序的时候,如果打开文件超过了限制,就会报错: java.io.IOException: error=24, Too many open files 解决办法: 首先查看j ... 
- 【EXPDP】Oracle expdp中并行问题
			$ expdp hr/hr tables=test1 dumpfile=test2.dmp directory=pump parallel=4 Export: Release 11.2.0.4.0 - ... 
- C++ STL 优先队列 (priority_queue)
			std::priority_queue <queue> 优先队列 优先队列是一种容器适配器,根据某些严格的弱排序标准,使其第一个元素始终包含的最大元素. 这种特性类似于堆,它可以在 ... 
- libuv工作队列
			目录 1.说明 2.API 2.1.uv_queue_work 2.2.uv_cancel 3.代码示例 1.说明 libuv 提供了一个线程池,可用于运行用户代码,libuv 中的工作队列中的任务会 ... 
- ubuntu14.04 LEMP(linux+nginx+mysql+php5)构建环境
			Install LEMP (Linux, Nginx, MySQL and PHP) Stack on Ubuntu Linux 14.04 LTS by VIVEK GITE on DECEMBER ... 
- [从源码学设计] Flume 之 memory channel
			[从源码学设计] Flume 之 memory channel 目录 [从源码学设计] Flume 之 memory channel 0x00 摘要 0x01 业务范畴 1.1 用途和特点 1.2 C ... 
