学Java多线程必知的Java内存模型JMM

本文详细介绍了Java内存模型JMM,包括JVM与JMM的关系、CPU多级缓存结构引发的缓存一致性问题、指令重排序的影响,以及JMM如何在多线程环境下解决这些问题。通过理解JMM,我们可以更好地掌握Java中的并发编程和内存可见性。
摘要由CSDN通过智能技术生成

学Java多线程必知的Java内存模型JMM

JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、

JMM 体现在以下几个方面

  • 原子性 - 保证指令不会受到线程上下文切换的影响
  • 可见性 - 保证指令不会受 cpu 缓存的影响
  • 有序性 - 保证指令不会受 cpu 指令并行优化的影响

我们熟知的valatile关键字就是确保了可见性与有序性,但注意,valatile不确保原子性

JVM与JMM

首先,不要把JVM内存模型与JMM内存模型搞混淆了

我们常说的JVM内存模式指的是JVM的内存分区,而Java内存模式是一种虚拟机规范

Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果

JMM规范了Java虚拟机与计算机内存是如何协同工作的:

一个线程如何与何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量

Java内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别,在任何计算机上,JMM都可以抽象成线程与内存

首先我们得看看Java内存模型是基于底层怎样的机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值