【3】线程安全-有序性

版权声明:送人玫瑰,手有余香,一分也是爱 https://blog.csdn.net/m0_37156901/article/details/85866998

点击找到我Gitee
一个线程观察其他线程的指令执行顺序,由于指令重排序的存在,这个观察结果杂乱无序,如果两个操作的执行次序无法从这八条规则中得出,就不能保证他们的有序性,虚拟机就可以随意打乱两个指令,对他们重排序。

在这里插入图片描述
后两个关键字保证一次执行,可以实现有序性,但是java内存模型先天也是有序的,
这是因为happens - before 原则-- 先行发生原则–八条原则(深入理解java虚拟机书)

happens - before 原则

happens - before 原则-- 先行发生原则–八条原则(深入理解java虚拟机书)
JVM会对指令进行重排序,只会对程序不进行数据依赖的指令重排序,能保证在单线程中正确执行,却无法保证多线程正确。
在这里插入图片描述
在这里插入图片描述
前四条重要,后四条显而易见
在这里插入图片描述
这两个主要介绍了线程的操作
这两个主要介绍了线程的操作,

如果两个操作的执行次序无法从这八条规则中得出,就不能保证他们的有序性,虚拟机就可以随意打乱两个指令,对他们重排序。

线程安全性-总结

三大特征介绍完了

原子性:互斥操作

可见性:

有序性:happens - before 原则

一个线程观察其他线程的指令执行顺序,由于指令重排序的存在,这个观察结果杂乱无序,如果两个操作的执行次序无法从这八条规则中得出,就不能保证他们的有序性,虚拟机就可以随意打乱两个指令,对他们重排序。

一分也是爱

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37156901/article/details/85866998
今日推荐