java指令重排

原创
2021/09/05 01:15
阅读数 114

指令重排,是由于现代计算机的CPU执行速度比内存速度快,CPU在保证不影响最后结果的情况下,执行各个指令。 例如 Integer i = 2; 整个过程,正常顺序:

  1. 内存分配,赋予默认值0
  2. 把2赋予初始化
  3. 把i指向初始化的空间,也就是指针绑定 多线程的情况下,可能会出现1->3->2这样的执行顺序。 假如刚好是1->3->2的顺序,那么某个线程使用的i可能是第一个阶段准备的默认值0,导致最后的结果误差。 如果使用了volatile,可以确保指令无法被重排,也就是1->2->3的顺序,结果就不会出现问题。
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部