java内存模型介绍

59859d49d8d04d3c911e1ee2439630f7.gifJava内存模型(Java Memory Model,JMM)是一种规范,它定义了Java虚拟机(JVM)如何在内存中存储和访问Java对象的方式,以及多个线程如何访问这些对象时的规则。它的主要目标是定义程序中的各个线程如何以及何时可以看到其他线程对共享变量的修改。这里有几个核心概念你需要了解:
1.主内存(Main Memory):
1.所有的变量都存储在主内存中,这是所有线程共享的数据区域。

 

2.主内存是抽象的概念,并不直接对应于物理内存。
1.工作内存(Working Memory):
1.每个线程都有自己的工作内存,存储从主内存中读取的变量副本。

2.工作内存是线程私有的,其他线程无法直接访问。
1.可见性(Visibility):
1.当一个线程修改了主内存中的变量后,其他线程可能不会立即看到这一变化,因为变化可能只存在于修改线程的工作内存中。
1.使用synchronized关键字或volatile关键字可以确保变量的变化对其他线程立即可见。
1.原子性(Atomicity):
1.操作必须是不可分割的,要么完全执行,要么完全不执行。
1.volatile关键字可以保证变量操作的原子性。
1.有序性(Ordering):
1.确保程序的执行顺序符合代码的顺序。
1.synchronized块和volatile关键字可以用来保证操作的有序性。
1.happens-before原则:
1.这是一个判断线程之间变量读写操作顺序的规则。
1.如果一个动作happens-before另一个动作,那么第一个动作对主内存的影响必须在第二个动作之前发生。
为了确保线程安全和正确的数据一致性,Java内存模型定义了几种同步原语,比如synchronized关键字和volatile变量。synchronized提供了排他性的锁定机制,而volatile则用于标记变量,使得每次读写操作都直接针对主内存而不是工作内存,从而保证了变量的可见性和有序性。
理解JMM的最佳方式是通过例子和实验来观察不同线程对共享变量的操作。如果你有兴趣深入了解或者有具体的问题,我可以提供更多的解释和代码示例来帮助你。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值