美文网首页Java 杂谈
乱序执行(指令重排)

乱序执行(指令重排)

作者: 大黑跟小白的日常 | 来源:发表于2019-01-21 19:46 被阅读0次

    乱序执行(指令重排)

    是这样说的:

        private static Service service = null;

        service = new Service();

    第二句代码,分了三步:

    1、内存中为对象分配空间;

    2、对象空间初始化(初始化对象属性);

    3、引用service指向分配的对象地址;

    说上面的2、3可能会存在指令重排;

    就是service先指向了内存地址,service不再是null;后将对象初始化完毕;

    这明明就是一个复制语句,刚学编程老师就教过,赋值语句会最后执行。到了他们嘴里,就变成了什么指令重排、乱序执行。

    具体见:http://blog.itpub.net/28912557/viewspace-762047/

    然后测了一个下午,加一个晚上,都没测出个乱序执行的现象。

    很累呢....

    望各位大神指点,给出问题重现的代码。跪谢。

    他们说的解决办法:

        1、用volatile关键字修饰,既保证可见性,又保证了它所修饰的目标所涉及的代码不会存在指令重排。牺牲了一点点效率(主内存数据交换)。

    相关文章

      网友评论

        本文标题:乱序执行(指令重排)

        本文链接:https://www.haomeiwen.com/subject/acdhjqtx.html