12.5 先行发生原则

时间先后顺序于先行发生没有绝对关系,一切以先行发生原则为主。

1. 程序次序原则。同一个线程内,按照程序代码顺序先后执行。

2. 管道锁定规则。一个unlock操作先行于后面对同一个锁的lock操作。强调的是同一个锁,后面指的是时间顺序。

3. volatile变量规则。对于一个volatile变量的写操作先行发生于后面对这个变量的读操作,后面同样指时间顺序。

4. 线程启动规则。Thread对象的start方法优先于此线程的每一个动作。

5. 线程终止规则。线程中的所有操作先行于对此线程的终止检测。

6. 线程中断规则。对线程interrupt方法的调用先行于被中断线程的代码检测到中断事件的发生。通过Thread.interrupted()方法检测到是否有中断。

7. 对象终结规则。一个对象的初始化完成先行于他的finalize方法。

8. 传递性规则。A先行于B,B先行于C,则A先行于C。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容