Toc
0 results found
BOBO
JVM内存模型
2020/09/08 JVM
  • 原子性
    • 通过锁或者 CAS 无锁来保证
  • 可见性
    • 通过锁或者 volatile 来保证
  • 有序性
    • as-if-serial 保证单线程内程序的执行结果不会变
    • hanppens-before 保证正确同步的多线程程序执行结果不会变
      • 程序顺序规则:一个线程中的每个操作,happens-before 于该线程中的任意后续操作。
      • 监视器锁规则:对一个锁的解锁,happens-before 于随后对这个锁的加锁。
      • volatile 变量规则:对一个 volatile 域的写,happens-before 于任意后续对这个 volatile 域的读。
      • 传递性:如果 A happens-before B,且 B happens-before C,那么 A happens-before C。
      • start()规则:如果线程 A 执行操作 ThreadB.start()(启动线程 B),那么 A 线程的 ThreadB.start()操作 happens-before 于线程 B 中的任意操作。
      • join()规则:如果线程 A 执行操作 ThreadB.join()并成功返回,那么线程 B 中的任意操作 happens-before 于线程 A 从 ThreadB.join()操作成功返回。
      • 程序中断规则:对线程 interrupted()方法的调用先行于被中断线程的代码检测到中断时间的发生。
      • 对象 finalize 规则:一个对象的初始化完成(构造函数执行结束)先行于发生它的 finalize()方法的开始。
    • 都是在保证程序结果不变的情况下尽可能地提高程序效率
支付宝
微信
Simple is Awesome