理解java内存模型

151 阅读1分钟

1.JMM(java内存模型)

 Java虚拟机规范中定义了Java内存模型,用于屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各平台下都能达到一致的并发效果。
 JMM规范了Java虚拟机与计算机内存是如何协同工作的,规定了一个线程如何和合适可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。
 运算在cpu,主存中数据通过数据总线读取到工作内存工作。

2.MESI缓存一致性协议

 a.数据读取到cpu处理和协会到主存都通过主线。
 b.volatile关键字通过注册在总线嗅探机制,可以发现数据被修改,从而使cpu中该缓存数据失效。

3.CPU流水线

4.valitale关键字原理

lock禁止指令重排序,内存可见

5.数据处理原子操作

  数据处理原子操作 read load use asign store write  lock unlock

6.双重检查锁单例,能不能不用volatile关键字?

  不能,新建对象不是一步完成,有分配空间,初始化(构造方法),指向。volatile可以防止cpu指令重排序。