在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。
它是判断数据是否存在竞争、线程是否安全的主要依据,依靠这个原则,我们解决在并发环境下俩操作之间是否可能存在冲突的所有问题。
原则定义如下:
1.如果一个操作happens-beforelingyige 操作,那么第一个操作的执行结果对第二个操作可见,而且第一个操作的执行顺序在第二个操作之前。
2.俩个操作之间存在happens-before关系,并不意味着一定要按照happens-before原则制定的顺序来执行。如果重排序之后的执行结果与按照happens-before关系来执行的结果一致,那么这种重排序并不非法。
网友评论