在Java 并发编程(三)同步中,提到了内存一致性错误,而避免内存一致性错误的关键就是了解happens-before关系。那么什么是happens-before关系呢?如何判断两个操作是否存在happends-before关系呢?本文将来介绍这两个方面。
1. happens-before关系
Wikipedia, Happened-before是这样定义的:
In computer science, the happened-before relation (denoted: ->) is a relation between the result of two events, such that if one event should happen before another event, the result must reflect that, even if those events are in reality executed out of order (usually to optimize program flow).
简答翻译一下,就是:
在计算机科学领域,happened-before是指两个事件结果的关系(用->表示),如果一个事件发生在另一个事件之前,那么第一个事件的结果必须影响到第二个事件,即使这事件实际并不按顺序执行(通常