java内存模型-先行发生原则

上面说过,如果要靠synchronized和volatile来保证有序性,那java就是一个失败的语言,在java语言中有一个“先行发生”原则。

java天然的先行发生关系如下:
程序次序规则
管程锁定规则
线程启动规则:线程start方法先行发生于此线程的每一个动作
线程终止规则:线程中所有操作都先行发生于此线程的终止检测,所以,我们才能利用Thread.join()方法结束、Thread.isAlive的返回值等手段检测线程已经终止执行
线程中断原则
对象终结原则
传递性:A先于B,B先行于C,那么A先行于C;

注意:这里的先行和时间上先行是两码事;

参考《深入理解java虚拟机》

    原文作者:java内存模型
    原文地址: https://blog.csdn.net/kuaileshifu/article/details/49838681
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞