zoukankan      html  css  js  c++  java
  • JMM(java内存模型)了解 lq

    1. 重排序:jvm虚拟机允许在不影响代码最终结果的情况下,可以乱序执行。
    2. 内存屏障:可以阻挡编译器的优化,也可以阻挡处理器的优化
      • 保证特定操作的执行顺序
      • 保证某些变量的内存可见性
    3. happens-before原则:
      1:一个线程的A操作总是在B之前,那多线程的A操作肯定实在B之前。
      2:monitor 再加锁的情况下,持有锁的肯定先执行。
      3:volatile修饰的情况下,写先于读发生
      4:线程启动在一起之前 strat
      5:线程死亡在一切之后 end
      6:线程操作在一切线程中断之前
      7:一个对象构造函数的结束都该对象的finalizer的开始之前
      8:传递性,如果A肯定在B之前,B肯定在C之前,那A肯定是在C之前。
    4. java内存模型规定:将所有的变量存放在主内存中,当线程使用变量时,会把主内存里面的变量复制到自己的工作内存,线程读写变量时操作的是自己工作内存中的变量,处理完成后将变量值更新到主内存。
      • 主内存:所有线程共享的内存空间。
      • 工作内存:每个线程特有的内存空间。线程自己的工作空间的寄存器或者L1-cache、L2-cache。
  • 相关阅读:
    python函数收集不确定数量的值
    PHP比较数组、对象是否为空
    PHP实现斐波那契数列
    Python之复制列表
    1004. 最大连续1的个数 III(滑动窗口)
    276. 栅栏涂色(动态规划)
    376. 摆动序列
    148. 排序链表
    143. 重排链表
    1530. 好叶子节点对的数量
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15566953.html
Copyright © 2011-2022 走看看