Java内存模型(JMM)

为什么需要JMM

  在多CPU的系统中,每个CPU都有多级缓存,一般分为L1、L2、L3缓存,因为这些缓存的存在,减轻了数据总线上数据传输的压力,但是也带来了新的问题,两个CPU之间对共享变量的操作是不可见的,就会有线程安全问题。
在这里插入图片描述

JMM是什么

  Java内存模型(Java Memory Model,简称JMM)是一种规范,它定义了Java虚拟机(JVM)在计算机内存(RAM)中的工作方式,即规范了Java虚拟机与计算机内存之间是如何协同工作的。它规定了一个线程如何和何时可以看到其他线程修改过的共享变量的值,以及在必须时如何同步地访问共享变量。
  在JMM中,将内存分为了工作内存(L1,L2,L3)和主内存。当操作一个共享变量时不能直接在主内存中修改,需要从主内存中复制一份共享变量的副本到工作内存中,操作完后将共享变量刷新到主内存中。JMM保证了可见性,原子性,有序性。
在这里插入图片描述

happens-before原则

  是对JMM规范的一种实现。如果A线程在B线程执行之前执行,那么就是A happens-before B。此时会保证可见性和有序性,B可以读取到A最新修改的值,指令重排序不会影响先执行A再执行B的顺序。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值