多线程(8)JMM底层原理

1.什么是JMM(JAVA内存模型)

JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),
本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编译器优化。

2.为什么需要JMM JAVA内存模型
 
先看下java到最后执行的CPU指令的流程
  • 最开始我们编写的是*.java 文件
  • 执行javac 编译成java字节码文件(*.class文件)
  • JVM会执行字节码文件,并把字节码文件转化成机器指令
  • 机器指令会在CPU上运行,也就是最终的程序执行

但是不同处理器的机器指令不相同,执行顺序不一样。所以不同处理器执行结果不一致,需要统一的标准即JMM保证多线程运行结果可期。

猜你喜欢

转载自www.cnblogs.com/t96fxi/p/12902682.html