java并发之happens-before原则

简单理解happens-before概念:

        若 A操作 happens-before B操作,那么意味着,A操作的结果将对B操做来说是可见的。程序运行上,A操作并不一定发生在B操作之前,因为可能出现重排序的问题。即使出现重排序,但是由于happens-before的原因,并不会影响结果。

happens-before原则保证正确同步的程序之间的结果。

happens-before规则:

    对于volatile变量,写操作 happens-before与任意 后续 的读操作。注意是后续的,不代表写操作一定发生在读操作之前。

    单线程内,一个操作总是happens-before于后续的操作

    对于一个锁的解锁,happens-before于后续对这个锁的加锁

    happens-before支架存在传递性。

     注意上面加粗的  后续  一词,表示happens-before之间的关系也是随机的,并不代表写操作就一定发生在读操作之前,

happens-before关系只是保证前面的操作对于后续的操作来说,结果 是可见的。

happens-before关系对于单线程,多线程一样适用。

猜你喜欢

转载自blog.csdn.net/qq_32182461/article/details/80353133