Ch01-Java JUC 之 理论基础
April 4, 2017
Happens-Before 规则 #
规则 | 说明 |
---|---|
单一线程原则 | 在一个线程内,在程序前面的操作先行发生于后面的操作 |
管程锁定规则 | 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作 |
volatile 变量规则 | 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作 |
线程启动规则 | Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 |
线程加入规则 | Thread 对象的结束先行发生于 join() 方法返回 |
线程中断规则 | 对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 interrupted() 方法检测到是否有中断发生 |
对象终结规则 | 一个对象的初始化完成 (构造函数执行结束) 先行发生于它的 finalize() 方法的开始 |
传递性 | 如果操作 A 先行发生于操作 B,操作 B 先行发生于操作 C,那么操作 A 先行发生于操作 C |