happens-before的意义
- 1.通过该规则避免了内存模型中所有的有序性都只靠volatile和synchronized完成
- 2.对于happens-before JVM天生支持(因为JMM)
happens-before的规则
程序次序规则
- 1.在一个线程内,按照代码顺序,卸载前面的操作现行于后面的操作(存在重排序,但是不影响程序正确性)
管程锁定规则
- 1.一个unlock操作现行发生于后面对同一个锁的lock操作
volatile
- 1.对一个volatile变量的写操作现行发生于后面对于这个变量的读操作
线程启动规则
- 1.thread对象的start方法现行发生于此线程的每一个动作。
线程终止规则
- 1.线程中的所有操作都先行发生于对此线程的终止检测。
线程中断规则
- 1.对线程interrup方法的调用现行发生于被中断线程的代码检测到中断事件的发生。
对象终结规则
- 1.对一个对象的初始化完成现行发生于它的finalize方法的开始。
传递性
- 1.A操作现行发生于B操作,B操作先行发生于操作C,则A操作先行发生于操作C。
网友评论