什么是内存屏障——生动形象故事说明

**Java内存模型(JMM)**是一座大桥,连接着多个小岛(代表多核CPU上的多个线程)。每个小岛上都有自己的商店(代表CPU缓存),岛民(线程)通常在自己的商店购物(读写变量),以避免长途跋涉到大桥的另一端去中央市场(主存)购物。这样做虽然快捷方便,但也容易导致岛上的商店存货(变量副本)与中央市场的存货(变量的主副本)不同步。

这时,岛上的**守卫(内存屏障)**发挥了重要作用。他们在某些关键的路口设置了检查站(内存屏障),确保岛民在进出商店(执行读写操作)时遵守一定的规则,以保持岛上商店的存货与中央市场的存货一致。

例如,当一个岛民想要把新鲜的水果(新写入的变量)带到自己的商店时,出入口的守卫(写后内存屏障)会确保这批水果在进入商店之前,先通知中央市场更新存货,这样其他岛上的商店也能得到更新。

同样,当岛民想要买水果时,入口处的守卫(读前内存屏障)会先从中央市场检查是否有最新的水果,确保岛民买到的是最新鲜的水果。

生动形象地说,内存屏障就像是这些守卫,通过在关键路径上设置检查点,确保了不同岛民(线程)之间在访问共享资源(变量)时的一致性和有序性。这样,尽管每个岛民都在自己的小岛上忙碌,但大家都能共享最新鲜、最一致的资源,维护了整个岛屿群的和谐。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值