美文网首页
Happens-Before 规则

Happens-Before 规则

作者: test_java | 来源:发表于2019-05-17 23:18 被阅读0次

    内存模型

    Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法

    volatile关键字,它最原始的意义就是禁用CPU缓存。
    遵循Happens-Before 规则 前面一个操作的结果对后续操作是可见的

    1. 程序的顺序性规则
      这条规则是指在一个线程中,按照程序顺序,前面的操作 Happens-Before 于后续的任意操作
    2. volatile变量规则
      这条规则是指对一个volatile变量的写操作, Happens-Before 于后续对这个volatile变量的读操作
    3. 传递性
      这条规则是指如果A Happens-Before B,且B Happens-Before C,那么A Happens-Before C。
    4. 管程中锁的规则
      这条规则是指对一个锁的解锁 Happens-Before 于后续对这个锁的加锁。
    5. 线程 start() 规则
      这条是关于线程启动的。它是指主线程A启动子线程B后,子线程B能够看到主线程在启动子线程B前的操作。
    6. 线程 join() 规则
      这条是关于线程等待的。它是指主线程A等待子线程B完成(主线程A通过调用子线程B的join()方法实现),当子线程B完成后(主线程A中join()方法返回),主线程能够看到子线程的操作。当然所谓的“看到”,指的是对共享变量的操作。

    相关文章

      网友评论

          本文标题:Happens-Before 规则

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