初识JVM之JAVA内存模型(JMM)

目录

1:JMM---传说中的JAVA内存模型

2:为什么要有JMM

3:JMM解析

4:JMM会带来什么问题

5:是怎么解决的


1:JMM---传说中的JAVA内存模型

2:为什么要有JMM

在我们日常的开发中,可能会涉及到多线程的业务,而JMM是多线程操作的基础

3:JMM原理解析

1:JMM内存模型的区域是基于两个内存区域的分别是1:本地内存---属于线程,2:主内存---属于JVM

2:在线程A刚刚开始工作的时候,会从主内存中拷贝一份共享变量PQM等等,到自己的工作内存中,然后对变量操作完成后将结果刷新写到主内存中(不一定会及时),然后线程B同时来了,也会拷贝一份共享变量到自己的本地内存中,操作完成后回写到主内存中(不一定会及时)

4:JMM会带来什么问题

JMM内存模型可能会带来多线程安全的问题,A,B线程同时对变量P = 0进行操作,A:p = p + 1,B: p = p + 1,然后回写到主内存中,按照道理来说,p的值应该是2,但是可能存在p的值是1的情况,原因是A或者B没有及时读取到主内存中最新值

5:是怎么解决的

在JAVA中是可以用  volatile(最轻量的同步机制) 关键字来解决的变量的可见性问题,详细可参考https://www.cnblogs.com/chenssy/p/6379280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值