栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JMM是什么?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JMM是什么?

系列文章:【并发编程】知识脉络

前言 

        JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。 JMM可以理解为是一个规范,一个抽象概念,并不真实存在。

JMM结构

 Java的并发采用的是共享内存模型
  • 线程之间的共享变量存储在主内存(Main Memory)中。
    • 共享变量 <--->主内存
  • 每个线程都有一个私有的本地内存(Local Memory)。
  • 本地内存中存储了该线程以读/写共享变量的副本。
    • 共享变量的副本<--->本地内存
JMM工作流程 

 JMM规定
  • 按顺序执行read--load,且不可单独出现。
  • 按顺序执行store-- write,且不可单独出现。
  • 有assign操作后,变量改变后,需要同步到主内存中。
  • 新变量必须诞生在主内存中,不可使用未load过的变量。
  • 一个变量同一时刻只允许一个线程lock它。且一个lock就要一个unlock解开。
  • 对变量lock操作,将会清空所有本地内存中此变量。
  • unlock一个变量前必须有store 和 write操作。
  • ......
JMM面临的问题

可见性:如何保证共享变量的副本变化后其他线程可见?

有序性:如何保证第一步到第六步按顺序执行?

原子性:如何保证第一步到第六步完整执行?        

结尾

        了解了JMM结构和工作流程,就会发现使用并发编程时,需要考虑得多一些,同时Java也努力用一些简单的方式帮助我们规避这些可能的问题,例如:volatile关键字、synchronize的关键字等等。之后将会一一解读。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号