happens-before的规则

来源:互联网 发布:rds sql审计 编辑:程序博客网 时间:2024/05/15 13:30

happens-before是JMM(java main memory)最核心的概念,在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作可以是一个线程内的,也可以是在不同线程之间。

happens-before的规则如下:

1)程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后续操作。

2)监视器锁定规则:对一个锁的解锁,happens-before于随后对这个锁的加锁。

3)volatile变量规则:对一个volatile域的写,happens-before于任意后续对这个volatile域的读。

4)传递性:如果A happens-before B ,且B happens-before C,那么A happens-before C。

5)start()规则:如果线程A执行操作TreadB.start()(启动B线程),那么A线程的ThreadB.start()操作happens-before于线程B中的任意操作。

6)join()规则:如果线程A执行操作ThreadB.join()并成功返回,那么线程B中的任意操作happens-before于线程A从ThreadB.join()操作成功返回。

0 0
原创粉丝点击