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

JMM理念

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

JMM理念

JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不是真实存在的,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。

JMM关于同步的规定:

1线程解锁前,必须把共享变量的值刷新回主内存

2线程加锁前,必须读取主内存的最新值到自己的内存

3加锁解锁是同一把锁

由于JVM运行程序是线程,而每个线程创建是JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存还是每个线程的私有数据区域,二Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内存拷贝到自己的工作空间,然后对变量进行操作,操作完成后将变量写回主内存,不能直接操作内存中的变量,各个线程中的工作中存储着主内存中变量副本拷贝,因此不同的线程间无法访问对方的工作内存,线程间的通信(传值)则必须由主内存来完成。

JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不是真实存在的,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。

JMM关于同步的规定:

1线程解锁前,必须把共享变量的值刷新回主内存

2线程加锁前,必须读取主内存的最新值到自己的内存

3加锁解锁是同一把锁

由于JVM运行程序是线程,而每个线程创建是JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存还是每个线程的私有数据区域,二Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内存拷贝到自己的工作空间,然后对变量进行操作,操作完成后将变量写回主内存,不能直接操作内存中的变量,各个线程中的工作中存储着主内存中变量副本拷贝,因此不同的线程间无法访问对方的工作内存,线程间的通信(传值)则必须由主内存来完成。

其应该注意的细节:可见性、原子性、有序性我就不过多解释了

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

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

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