happens-before简介

happens-before概念阐述了操作之间的内存可见性。在Java内存模型中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是在一个线程之内,也可以是在不同线程之间。

与程序员密切相关的happens-before规则如下:
1. 程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后续操作。
2. 监视器锁规则:对于一个锁的解锁,happens-before于随后对这个锁的加锁。
3. volatile变量规则:对于一个volatile域的写,happens-before于任意后续对这个volatile域的读。
4. 传递性:如果A happens-before B,且B happens-before C,那么A happens-before C。 

两个操作之间具有happens-before关系,并不意味着前一个操作必须要在后一个操作之前执行。happens-before仅仅要求前一个操作的执行结果对后一个操作可见。 


你可能感兴趣的:(java,thread,多线程)