什么是 Java 内存模型?

在了解什么是 Java 内存模型之前,先了解一下为什么要提出Java 内存模型。

之前提到过并发编程有三大问题

  • CPU 缓存,在多核 CPU 的情况下,带来了可见性问题
  • 操作系统对当前执行线程的切换,带来了原子性问题
  • 译器指令重排优化,带来了有序性问题

为了解决并发编程的三大问题,提出了 JSR-133,新的 Java 内存模型,JDK 5 开始使用。

那么什么是Java 内存模型呢?

现在说的 Java 内存模型,一般是指 JSR-133: Java Memory Model and Thread Specification Revision 规定的 Java 内存模型。

JSR-133 具体描述:jsr133.pdf

JSR-133 在 JCP 官网的具体描述

说明下

JSR:Java Specification Requests,Java 规范提案。

JCP:Java Community Process 是一个开放的国际组织,成立于1998年,主要由 Java 开发者以及被授权者组成,是使有兴趣的各方参与定义 Java 的特征和未来版本的正式过程。

简单总结下

  • Java 内存模型是 JVM 的一种规范
  • 定义了共享内存在多线程程序中读写操作行为的规范
  • 屏蔽了各种硬件和操作系统的访问差异,保证了 Java 程序在各种平台下对内存的访问效果一致
  • 解决并发问题采用的方式:限制处理器优化和使用内存屏障
  • 增强了三个同步原语(synchronized、volatile、final)的内存语义
  • 定义了 happens-before 规则

参考:

给TA打赏
共{{data.count}}人
人已打赏
Java

导致并发程序出问题的根本原因是什么?

2020-7-31 0:33:20

Java

Java中的锁是什么?

2020-7-31 0:36:40

本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
⚠️
本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索