先行发生原则Happens-before

时间:2020-03-27
本文章向大家介绍先行发生原则Happens-before,主要包括先行发生原则Happens-before使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
int k = 1;      //男人
int j = k;	//女人

先行发生原则是Java内存模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,其实就是说在发生操作B之前,操作A所产生的影响能够被B观察到
简单来说:执行顺序的控制,后续代码可以监控到之前代码的所有操作

八大原则:
1.程序次序规则:
在一个线程内,按照代码的顺序,书写在前面的代码优先于发生书写在后面的代码

2.管程锁定原则
一个unlock操作先行发生于后面对同一个锁的lock操作,注意是同一个锁

3.volatile原则:
对一个volatile变量的写操作先行发生于后面对该变量的读操作

4.线程启动原则:
Thread对象的start()方法优先于此线程的每一个动作

5.线程终止原则
线程中所有的操作都优先发生于对此线程的终止

6.线程中断原则
对线程的interrupt()方法的调用先行发生于被中断线程的代码检测中断事件的发生 先中断再检测

7.对象终结原则:
一个对象的初始化(构造函数执行完毕)完成优先发生于它的finalize()方法的开始

8.传递性:

int a;         //1
int b;	       //2
int c;         //3        

如果操作A先行发生于操作B,操作B先行发生于操作C,那么就可以得出来操作A优先发生于操作C

原文地址:https://www.cnblogs.com/wishsaber/p/12584131.html