Happens-Before规则是什么 ?
程序顺序规则:一个线程中的每一个操作,happens-before于该线程中的任意后续操作。
1
2
3double pi = 3.14; // A
double r = 1.0; // B
double area = pi * r * r; // C一个线程中,按照程序顺序,前面的操作 Happens-Before 于后续的任意操作。这个还是非常好理解的,比如上面那三行代码,第一行的 “double pi = 3.14; “ happens-before 于 “double r = 1.0;”,这就是规则1的内容,比较符合单线程里面的逻辑思维,很好理解。
监视器规则:对一个锁的解锁,happens-before于随后对这个锁的加锁。