zoukankan      html  css  js  c++  java
  • java内存模型(待完善)

    JMM

       1、内存模型的抽象。

    本地内存是JMM的一个抽象概念,并不是真实存在,它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

       2、内存可见性问题?

          ?

       3、重排序

     编译器优化重排序       编译器再不改变单线程程序语义的前提下,可重新安排语句执行顺序。
    指令级并行重排序       现代处理器采用了指令并行技术,来将多条指令重叠执行,如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。
     内存系统重排序       由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是乱序执行。

     

       4、内存屏障指令。

       5、happens-before

       6、顺序一致性

       7、volatile 变量

           volatile 变量

      • 可见性:对于volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。
      • 原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这样的复合操作不具有原子性。

           volatile的读-写内存语义

      • 当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。
      • 当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。

       8、锁(LOCK)

    • 锁释放与volatile写有相同的内存语义。
    • 锁获取与volatile读有相同的内存语义。

       9、final 域

     

    还在学习中,还望各位多多指点指点。

  • 相关阅读:
    gulp通过http-proxy-middleware开启反向代理,实现跨域
    一些我常用的css 或者 js
    四舍五入
    生成 SSH 公钥
    对象转为数组 用lodash
    廖雪峰的官方网站
    window对象
    字符串
    简单得日期
    LeetCode 113. Path Sum II 20170705 部分之前做了没写的题目
  • 原文地址:https://www.cnblogs.com/outpointexception/p/4606433.html
Copyright © 2011-2022 走看看