Happens-Before原则
Happens-Before
- 程序顺序原则:如果程序操作 A 在操作 B 之前,那么多线程中的操作依然是 A 在 B 之前执行。
- 监视器锁原则:在监视器锁上的解锁操作必须在同一个监视器上的加锁操作之前执行。
- volatile 变量原则:对 volatile 修饰的变量写入操作必须在该变量的读操作之前执行。
- 线程启动原则:在线程对 Tread.start 调用必须在该线程执行任何操作之前执行。
- 线程结束原则:线程的任何操作必须在其他线程检测到该线程结束前执行,或者从 Thread.join 中成功返回,或者在调用 Thread.isAlive 返回 false。
- 中断原则:当一个线程在另一个线程上调用 interrupt 时,必须在被中断线程检测到 interrupt 调用之前执行。
- 终结器规则:对象的构造方法必须在启动对象的终结器之前完成。
- 传递性:如果操作 A 在操作 B 之前执行,并且操作 B 在操作 C 之前执行,那么操作 A 必须在操作 C 之前执行。