哪些指令不能重排序HappenBefore-神器

3次阅读

共计 229 个字符,预计需要花费 1 分钟才能阅读完成。

以下原则是指令重排序不可违背的:

1. 程序顺序性原则:一个线程内保证语意的串行性
2.volatile 原则:volatile 变量的写,先发生于读,这保证了 volatile 变量的可见性
3. 传递性:A 先于 B,B 先于 C,那么 A 必然先于 C
4. 线程的 start() 方法先于它的每一个动作
5. 线程的所有操作先于线程的终结(Thread.join)
6. 锁规则:解锁必然发生在随后的加锁前
7. 线程的中断先于被中断线程的代码
8. 对象的构造函数执行,结束先于 finalize()方法

正文完
 0