Java指令重排序

Posted 怀鑫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java指令重排序相关的知识,希望对你有一定的参考价值。

            指令重排的分类:编译期重排序和运行时重排序
            在JVM编译时期或者CPU执行JVM字节码时期,对现有的指令进行重排序,主要目的为了优化运行速度(在不改变程序运行结果的前提下)
            
            int a = 3        //1                        
            int b = 5;        //2
            int c = a + b;    //3
            
            虽然说指令重排可以调高程序的执行效率,但是在多线程环境下运行可能会影响到结果
                解决办法:内存屏障
                    内存屏障是一个屏障指令,使CPU对屏障指令之前和之后的内存操作结果都是一样的,相当于一种约束

以上是关于Java指令重排序的主要内容,如果未能解决你的问题,请参考以下文章

指令重排序

Java指令重排序

Java并发:重排序

Java 并发编程指令重排序规范 ( happens-before 先行发生原则 )

指令重排序

java内存模型之重排序