美文网首页
Java内存模型学习

Java内存模型学习

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


      内存模型示意图.png

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


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

    相关文章

      网友评论

          本文标题:Java内存模型学习

          本文链接:https://www.haomeiwen.com/subject/mqafkxtx.html