java虚拟机高效并发中的先行发生原则

java虚拟机高效并发中的先行发生原则:它是判断数据是否存在竞争,线程是否安全的主要依据。

虚拟机中有着天然的先行关系,如果两个操作不在此列或者无法从他们推导,那么他们就是不安全的,可重排序的,这时就需要一些安全加锁操作了。

1.程序次序规则:在一个线程内,按照程序代码的顺序,书写在前面的操作先行于书写于后面的操作。准确的说,应该是控制顺序,因为还有分支和循环结构存在。

2.管程锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。

3.volatile变量规则:一个volatile变量的写操作先行发生于后面对这个变量的读操作。

4.线程启动规则:thread对象的start()方法会先行于此线程的每一个动作。

5.线程终止规则:线程中的所有操作都会先行发生于对线程的终止检测。

6.线程中断规则:对线程的interrupt方法的调用先行发生于被中断线程的代码检测到中断事件的发生。也就是说,先中断,然后才可以检测到。

7.对象终结规则:一个对象的初始化先行于它的finalize方法。

8.传递性规则:A先行于B,B先行于C,那么A先行于C。

另外,时间的先后顺序于先行发生原则之间没有什么直接的关系。

 

你可能感兴趣的:(JVM学习)