先行发生原则

  1. 程序次序规则。在一个线程内,书写在前面的代码先行发生于后面的。确切地说应该是,按照程序的控制流顺序,因为存在一些分支结构。

  2. Volatile变量规则。对一个volatile修饰的变量,对他的写操作先行发生于读操作。

  3. 线程启动规则。Thread对象的start()方法先行发生于此线程的每一个动作。

  4. 线程终止规则。线程的所有操作都先行发生于对此线程的终止检测。

  5. 线程中断规则。对线程interrupt()方法的调用先行发生于被中断线程的代码所检测到的中断事件。

  6. 对象终止规则。一个对象的初始化完成(构造函数之行结束)先行发生于发的finilize()方法的开始。

  7. 传递性。A先行发生B,B先行发生C,那么,A先行发生C。

  8. 管程锁定规则。一个unlock操作先行发生于后面对同一个锁的lock操作。

原文地址:https://www.cnblogs.com/bigdig/p/14164731.html