文章字数:287,阅读全文大约需要1分钟
happens before
指的是在cpu
指令重排的情况下,能保证程序运行顺序的原则。
序号 | 规则名 | 描述 |
---|---|---|
1 | 程序次序 | 一个线程内,按照代码顺序,书写在前的先发生于书写在后的。 |
2 | 锁定 | 一个unLock 操作先发生于后面对于一个锁lock 的操作 |
3 | volatile |
对一个变量的写操作现行发生于后面对这个变量的读操作 |
4 | 传递 | 如果操作A现行发生于操作B,操作B先行发生于操作C,则A先行发生于操作C |
5 | 线程启动 | Thread 对象的start() 方法先行发生于次线程的每一个动作 |
6 | 线程中断 | 对线程interrupt 方法的调用先行发生于被中断线程的代码检测到中断事件的发生 |
7 | 线程终结 | 线程中所有操作都先行发生于线程的终止检测,可以通过Thread.join() 方法结束、Thread.isAlive() 的返回值检测线程结束 |
8 | 对象终结 | 对象初始化完成先行发生于他的finalize() 方法的开始 |