java内存模型-先行发生原则
2015-11-14 20:43
543 查看
上面说过,如果要靠synchronized和volatile来保证有序性,那java就是一个失败的语言,在java语言中有一个“先行发生”原则。
java天然的先行发生关系如下:
程序次序规则
管程锁定规则
线程启动规则:线程start方法先行发生于此线程的每一个动作
线程终止规则:线程中所有操作都先行发生于此线程的终止检测,所以,我们才能利用Thread.join()方法结束、Thread.isAlive的返回值等手段检测线程已经终止执行
线程中断原则
对象终结原则
传递性:A先于B,B先行于C,那么A先行于C;
注意:这里的先行和时间上先行是两码事;
参考《深入理解java虚拟机》
java天然的先行发生关系如下:
程序次序规则
管程锁定规则
线程启动规则:线程start方法先行发生于此线程的每一个动作
线程终止规则:线程中所有操作都先行发生于此线程的终止检测,所以,我们才能利用Thread.join()方法结束、Thread.isAlive的返回值等手段检测线程已经终止执行
线程中断原则
对象终结原则
传递性:A先于B,B先行于C,那么A先行于C;
注意:这里的先行和时间上先行是两码事;
参考《深入理解java虚拟机》
相关文章推荐
- Java 设计模式 (1) 策略模式
- Java多态性理解
- Java基础之List集合原理(二)
- 从头认识java-8.11 为什么需要内部类?
- java 子类重写父类的方法应注意的问题
- Java异常捕获 跟踪异常的传播路径
- Java异常处理 finally用法
- java内存模型-续1
- Java继承 学习 && 类初始化顺序
- java内存模型-对long和double型变量的特殊规则
- java io流 复制文本和媒体文件(TextCopy,MusicCopy)
- eclipse工具栏不显示sdk和adb图标?
- 【Java基础】List迭代并修改时出现的ConcurrentModificationException问题
- java连接数据库的步骤
- ubuntu上搭建eclipse下hadoop-2.7.1集群(全分布式)开发环境遇到的几个问题笔记
- Java多层的异常捕获
- Java 学习笔记
- java-内存模型-概述
- Java异常处理
- java打开文件对话框