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.线程启动规则:Thread对象的start()方法,happens-before于这个线程的任意后续操作。
6.线程终止规则:线程中的任意操作,happens-before于该线程的终止检测。可以使用Thread.join()方法结束,Thread.isAlive()的返回值等手段检测到线程已经终止执行。
7.线程中断操作:对线程interrupt()方法的调用,happens-before于被中断线程的代码检测到中断事件的发生,通过Thread.interrupted()方法检测到线程是否有中断发生。
8.对象终结规则:一个对象的初始化完成,happens-before于这个对象的finilize()方法的开始。