Happens-Before原则

Posted Cessi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Happens-Before原则相关的知识,希望对你有一定的参考价值。

1.原则综述:

前一个操作的结果可以被后续操作获取

2.遵循规则

1)程序次序规则

单一线程内,一段代码执行结果是不变的

2)管程锁定规则

多线程环境中,对于同一个锁,后获取锁的线程都能看到前一个线程的操作结果

3)volatile变量规则

对于一个volatile变量,前面线程所做的操作对后面线程必然可见

4)线程启动规则

主线程A与其启动得子线程B,则A在启动B之前所有的内存操作,对B可见

5)线程终止规则

主线程A与其启动得子线程B,如果B线程终止,则B线程终止前的所有内存操作对A可见

6)线程中断规则

一个线程捕获到中断信号,则必先执行interrupt方法。可以通过Thread.interrupted检测中断是否发生

7)传递规则

A happens-before B,B happens-brefore C,则A happens-before C

8)对象终结规则

对象初始化的时候,构造函数执行结束happens-before它的finalize()方法

以上是关于Happens-Before原则的主要内容,如果未能解决你的问题,请参考以下文章

Happens-Before原则

Happens-Before原则

Happens-Before原则

Happens-Before原则

Java 并发编程指令重排序规范 ( happens-before 先行发生原则 )

Juc11_Java内存模型之JMM八大原子操作三大特性读写过程happens-before