1、概述

    1.1、Java语言规范  规定了  JVM要维护  内部线程类似顺序化语意(只要程序的最终结果  等同于  它在严格的顺序化环境中执行的结果);

    

2、平台的存储模型

    2.1现代的处理器、编译器 为了从你的程序中榨取性能,会用尽手段

    2.2、在  可共享内存的多处理器 体系架构中,每个处理器都有自己的缓存,并且周期性地   与主内存协调一致;

    2.3、处理器 牺牲 存储一致性的保证来换取性能的提升;

        同时定义了一些特殊的指令(存储关卡、栅栏),用以在需要共享数据时,得到额外的存储协调保证;

    2.4、为了帮助Java开发者   屏蔽这些跨架构的存储模型之间的不同,Java提供了自己的内存模型;

        JVM会在适当的位置   插入 存储管卡,来   解决JMM与底层平台存储模型之间的差异化;

3、重排序

    3.1、各种能够引起操作延迟或者错误执行的不同原因,统称为:重排序;

4、Java存储模型的简介

    4.1、Java存储模型的定义  通过   动作的形式   进行描述;

          动作:变量的读写、监视器加锁和释放锁、线程的启动和拼接;

    4.2、JMM  为所有的程序内部的动作   定义了一个偏序关系(happens-before);

          当一个变量 被多个线程读取,至少被一个线程写入时,如果  读写操作  未按照happens-before排序,就会发生  数据竞争;

          一个正确同步的程序  是  没有数据竞争的  程序;

最新文章

  1. vim显示行号
  2. Keil的使用方法 - 常用功能(二)
  3. Linux嵌入式系统与硬件平台的关系
  4. OutputDebugString()
  5. Swift 提示 error running playground...
  6. 武汉科技大学ACM:1001: 华科版C语言程序设计教程(第二版)习题6.7
  7. 【阿里聚安全·安全周刊】双十一背后的“霸下-七层流量清洗”系统| 大疆 VS “白帽子”,到底谁威胁了谁?
  8. Django中用户权限模块
  9. powerdesigner添加mysql的字符集支持
  10. Bootstrap4 导航栏
  11. JavaSE| String常用方法
  12. Vue延迟点击
  13. Charles 网络抓包工具
  14. file文件与base64字符串的相互转换
  15. css3动画性能优化--针对移动端卡顿问题
  16. python 异常知识点
  17. 使用Fiddler做抓包分析
  18. 在 C Level 用 dlopen 使用 第三方的 Shared Library (.so)
  19. Mybatis简化sql书写,别名的使用
  20. 汇编Shellcode的技巧

热门文章

  1. jest 的 coverage 提示 unknown 的解决方案
  2. 【Struts2】工作流程
  3. 正则表达式——Unicode 匹配规则
  4. Windows.etc\hosts文件
  5. netcore 使用redis session 分布式共享
  6. jQuery与JavaScript与ajax三者的区别与联系(转)
  7. RabbitMq学习3-工作队列(Work queues)
  8. 四:JVM调优原理与常见异常处理方案
  9. 剑指offer-顺序打印二叉树节点(系列)-树-python
  10. spring cloud zuul过滤器修改requestURI 忽略大小写