Java中volatile关键字如何确保禁止指令重排?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1424个文字,预计阅读时间需要6分钟。
计算机在执行程序时,为了提高性能,编译器和处理器经常对指令进行重排,通常分为以下三种:
1. 源代码级重排
2.编译器优化重排
3.指令并行重排
计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种:
源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令
单线程环境里面确保最终执行结果和代码顺序的结果一致
处理器在进行重排序时,必须要考虑指令之间的数据依赖性
多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程中使用的变量能否保证一致性是无法确定的,结果无法预测。
本文共计1424个文字,预计阅读时间需要6分钟。
计算机在执行程序时,为了提高性能,编译器和处理器经常对指令进行重排,通常分为以下三种:
1. 源代码级重排
2.编译器优化重排
3.指令并行重排
计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种:
源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令
单线程环境里面确保最终执行结果和代码顺序的结果一致
处理器在进行重排序时,必须要考虑指令之间的数据依赖性
多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程中使用的变量能否保证一致性是无法确定的,结果无法预测。

