happens-before 机制是什么?

提问者:帅平 问题分类:面试刷题
happens-before 机制是什么?
1 个回答
肺少女
肺少女
happends-before 机制是 Java 内存模型的一个规范,其定义如下:
1、如果一个操作 happends-before 于另一个操作,那么第一个操作对于第二个操作可见,并且第一个操作排在第二个操作之前。
2、如果一个操作 happends-before 于另一个操作,如果其重排序后的结果和 happends-before 后的结果一致,那么这种重排序也是被 JMM 允许的。
在 Java 中,存在着以下的 happends-before 机制:
1、一个线程中的一个操作,都 happends-before 于该操作之后的任意操作。
2、一个锁的解锁,都 happends-before 于这个锁的加锁。
3、一个变量的 volatile 写,都 happends-before 于这个变量的 volatile 读。
4、如果 A happends-before 于 B,B happends-before 于 C,那么 A happends-before 于 C。
5、一个线程的 start 方法 happends-before 于这个线程的后续操作。
6、如果 ThreadA 中执行了 ThreadB.join(),那么 ThreadB 中的任意操作都 happends-before 于 ThreadA 在 join 的返回。
发布于:1个月前 (02-08) IP属地:四川省
我来回答