JVM 之java内存模型( 三 )
3.volatile规则:对一个volatile变量的写操作先行发生于后面对这个变量的读取操作 , 这里的”后面“同样指时间上的先后顺序 。
4.线程启动规则:Thread对象的start()方法先行发生于此线程的每一个动作 。
5.线程终于规则:线程中的所有操作都先行发生于对此线程的终止(Thread.join())
6.线程中断规则:对线程interrupt()方法的调用先行发生于被中断线程的代码检测到中断事件的发生 , 可以通过Thread.interrupted()方法检测是否有中断发生 。
7.对象终结规则:一个对象初始化完成(构造方法执行完成)先行发生于它的finalize()方法的开始 。
8.传递性规则:如果操作A先行发生于操作B , 操作B先行发生于操作C , 那就可以得出操作A先行发生于操作C的结论 。
这是程序中天然存在的先行发生关系 , 可以在编码中直接使用 , 如果2个操作的关系不在此列 , 或者由这些规则无法推导出来 , 它们就没有顺序性保障 , 虚拟机可以对它们进行任意的重排序 。
推荐阅读
- 手机内存不足别乱删,学会这5个技巧,让手机释放大量空间
- 计算机专业大一下学期,该选择学习Java还是Python
- Intel 11代酷睿逼近7GHz!内存超至6666.66MHz
- 内存大厂跨界之作!芝奇Enki 360一体式水冷评测:高密度冷排稳压18核心
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 旗舰|OPPO Find X3曝光:骁龙888/12G内存
- 威刚为英特尔12代Alder Lake平台准备了64GB DDR5-8400内存模组
- 曝Redmi Note 10 Pro获认证:8GB内存
- 学习大数据是否需要学习JavaEE
- 三星让渡部分DRAM产能:内存价格或暴涨