关于JMM(java内存模型)

JMM(java内存模型)

JMM的全程是Java Memory Model java内存模型。
    JVM定义java内存模型来屏蔽各种硬件和操作系统的内存访问差异,以实现java程序在任何平台下达到一致的访问效果。其主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量的底层细节。
    JMM设计系统中存在主内存和工作内存。所有的变量都存储在主内存中,对于所有线程共享。每条线程有自己的工作内存,线程的工作内存保存了被该线程使用到的变量的主内存副本拷贝。
    java内存模型是围绕着在并发过程中如何处理可见性,原子性和有序性这三个特征而建立的模型。
    对于原子性,JMM提供保证了访问基本数据类型的原子性,当应用场景需要更大范围的原子性保证,JMM还提供了lock和unlock操作满足需求,用户使用的是synchronized同步块来实现原子性;
    对于可见性是指一个线程修改了共享变量值,其他线程能够立即得知这个修改,JMM通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式实现可见性。普通变量和volatile变量都是如此,volatile变量特殊规则保证了新值立即同步回内存而使用前立即从内存刷新。volatile变量保证多线程操作下的变量可见性而普通变量不能保证。多线程情况下可以通过synchronized和final来实现可见性。
    对于有序性,线程内观察所有指令有序而线程外观察所有操作都无序,这和指令重排序现象和工作内存与主内存同步延迟现象有关。JMM提供了volatile变量和synchronized保证线程之间操作的有序性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值