Java内存模型学习

2017-07-27  本文已影响8人  idioitcbear
  1. 并发编程模型分类:
    • 共享内存:线程之间共享程序的公共状态,线程之间通过写-读内 存中的公共状态来隐式进行通信
    • 消息传递:线程之间没有公共状 态,线程之间必须通过明确的发送消息来显式进行通信
      在此
      Java采用的是共享内存的模型。
  2. Java内存模型的抽象
    线程之间共享存储在主内存中,每个线程都有一个私有的本地内存,本地内存 中存储了该线程以读/写共享变量的副本。本地内存是 JMM 的一个抽象概念,并不 真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。示意图如下:


    内存模型示意图.png

    线程A和线程B通讯示意图


    线程A和线程B通讯示意图.png
  3. 重排序
    为了提高性能一般会进行三重对指令集的重排序
  4. 编译优化的重排序
  5. 指令集并行重排序
  6. 内存系统重排序
  7. 内存屏障
  1. happen-before原则
  2. 同一线程中,当前操作happen-before任意后续操作
  3. 对一个监视器的解锁,happen-before对这个监视器的加锁
  4. volatile变量原则
  5. 传递性
上一篇下一篇

猜你喜欢

热点阅读