volatile变量的第二个语义是禁止指令重 排序优化

特别是在 多个CPU的状况下, 并发的时候, 应该优先考虑使用 volatile 关键字。 能够让 程序 按照 代码的 的前后顺序执行。不然可能 后写的代码 先执行。 由于 JVM 会可能会对 代码 的执行进行 重排序,重排序是为了提升程序执行的效率。 但是在并发的时候,就容易出现 一下 问题了。并发

使用volatile变量的第二个语义是禁止指令重 排序优化, 普通的变量仅仅会保证在该方法的执 行过程当中全部依赖赋值结果的地方都能获取到正 确的结果, 而不能保证变量赋值操做的顺序与程序代码中的执行顺序一致。 由于在一个线程的方 法执行过程当中没法感知到这点, 这也就是Java内 存模型中描述的所谓的“线程内表现为串行的语 义”(Within-Thread As-If-Serial Semantics) 。优化

《深刻理解JVM虚拟机》线程

相关文章
相关标签/搜索