JMM自己的happens-before定义:
- 操作A happens-before 操作B,则操作A执行顺序一定是在操作B前
- 若操作A、B满足happen-before规则,但两者重排序后不影响最终结果,操作B可能先执行
happens-before个人总结:
- 单线程中,操作A写在操作B前,那么操作A happens-before 操作B
- volatile变量的写操作 happens-before 后续的所有读操作
- 监视器锁的解锁happens-before 加锁
- 线程的start操作 happens-before 于 B线程中的任意操作
- 操作B中的任意操作 happens-before 线程B的 join返回