【Java 并发编程】指令重排序规范 ( happens-before 先行发生原则 )文章目录
一、指令重排序规范
二、happens-before 先行发生原则
一、指令重排序规范
----
指令重排指的是 , 线程中如果两行代码 没有逻辑上的上下关系 , 可以对代码进行 重新排序 ; 规范 : 先行发生原则 ;
二、happens-before 先行发生原则
----
happens-before 先行发生原则 : A happens-before B , A 先于 B 发生 , 使用 指令重排 ;
happens-before 先行发生原则 适用场景 : 在以下场景中 , 不进行指令重排 , 这些先后顺序 , 绝对不能被打乱 , 否则会出现严重线程安全问题 ;
程序次序原则 检测到 中断时 事件的发生 ; 必须先发生中断 , 然后才能被检测到 ; 不能还没发生中断 , 就可以检测到中断发生 ;
对象终结 : 对象的创建 先于 对象的终结 , 创建就是调用构造函数 , 终结就是调用 finalize 方法 ;
只要符合上述规则 , 不需要进行同步 , 就可以成立 ;
通过 " happens-before 先行发生原则 " 可以判定两个线程的操作 , 是否有发生冲突的可能 ;