as-if-serial语义部分的不理解

来源:3-1 synchronized实现可见性原理

嘻嘻T溦

2017-06-22 00:43

在讲到as-if-serial,说到Java编译器、运行时和处理器都会保证Java在单线程下遵循as-if-serial语义。运行时是什么意思,感觉这句话的标点符号用得不对,导致我不是很明白,是不是说java编译器会保证~~,且java在运行的时候处理器会保证~~?

写回答 关注

2回答

  • 忧伤的帅哥
    2017-06-22 00:50:00
    已采纳

    不管怎么重排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变。

    java内存中的变量都有指针引用,上下文引用成链,这个链是不会被打乱重排序的,只有没有数据依赖关系的代码,才会被冲排序,所以在单线程内部重排序不会改变程序运行结果,这就是as-if-serial

    嘻嘻T溦

    嗯,感觉又知道了些

    2017-06-22 00:53:38

    共 1 条回复 >

  • 嘻嘻T溦
    2017-06-22 00:47:27

    编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。


细说Java多线程之内存可见性

用两种方式实现内存可见性,代领大家深层次学习Java中的内存

55910 学习 · 74 问题

查看课程

相似问题