Java内存模型

内容纲要

Java内存模型

  • 是一组规范,规范了java与cpu内存之间的一系列转换关系,来帮助程序员更简单的开发
  • java内存模型更重要的是可见性,重排序和原子性
  • 可见性
  • 重排序,深入到java指令部分
  • 原子性(那些是原子性)

为什么会有可见性问题

每个线程运行的过程中都会有自己的一个缓存层,当数据刷新后,当前核心的缓存层则会等待时机将改变后的值刷会到主存,但是等待时机的时候其他核心(线程)读取主存中还没未被刷新的值的时候,则会读取到以前的值,造成程序可见性风险

解决方案

主内存和本地内存

主内存和本地内存看的关系

  • JMM有以下规定
  1. 所有的变量都存储在主内存中,同时每个线程也有自己独立的工作内存
    工作内存中的变量内容是主内存中的拷贝
  2. 线程不能直接读写主内存中的变量,而是只能操作自己工作内存中的变量
    然后再同步到主内存中
  3. 主内存是多个线程共享的,但线程间不共享工作内存,如果线程间需要通
    信,必须借助主内存中转来完成
  • 所有的共享变量存在于主内存中,每个线程有自己的本地内存,而且线
    程读写共享数据也是通过本地内存交换的,所以才导致了可见性问题。
THE END
分享
二维码
< <上一篇
下一篇>>