有序性:程序理论上是顺序执行的,但由于提高缓存命中和加快执行速度,使得指令重排,因此导致线程安全问题,可通过先行发生原则来判断线程是否是安全的
先行发生原则:保障线程安全有序性
程序次序原则:按照程序的控制流顺序执行代码
管程锁定原则:一个unlock操作先行发生于后面对同一个锁的lock操作
volatile原则:对于一个volatile修饰的变量,对他的写操作先行发生于读操作<br>
线程启动原则:thread对象的start()方法先行发生于此线程的每一个动作
线程中断原则:对线程的interrupt()方法先行发生于被中断线程的代码所检测到的中断事件
线程终止原则:线程所有的操作都先行发生于对此线程的终止检测<br>
对象终止原则:一个对象的初始化完成先行发生于对象的finilize()方法的开始
传递性:A先行发生于B,B先行发生于C,A一定先发生于C