Happens-Before 原则
Happens-Before 规则
Happens-Before是JMM的核心概念之一,是一种可见性模型,保障多线程环境下前一个操作的结果相对于后续操作是可见的。
- 程序顺序性,同一线程中前面代码的操作happens-before后续的任意操作。
- volatile变量规则,volatile的写操作happens-before后续对这个变量的读操作。
- 传递性,A happens-before B,且 B happens-before C,那么A happens-before C。
- 管程(synchronized)中锁的规则,上一个线程对变量的修改 happens-before 后续线程。
- 线程start() 规则,线程A启动子线程B后,子线程B能看到主线程A启动线程B前的操作。
- 线程join() 规则,主线程A通过join()等待子线程B完成,子线程B完成后主线程A能看到子线程B的任意操作。