`
翟健
  • 浏览: 3520 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

深入理解Java内存模型的学习笔记二(重排序)

阅读更多
查阅地址为:http://ifeve.com/java-memory-model-2/
数据依赖性
   1、单线程中,前后两个操作如果有数据依赖:写后读,读后写,写后写,编译器和处理器将不做重排序
as-if-serial
   1、as-if-seral的意思是无论采取怎样的序列执行,单线程的执行结果都不会变,处理器可以重排序执行的顺序,它为程序员提供一种幻境:程序是按顺序执行的,但其实编译器和处理器由于性能上的考虑已经做了重排序
程序执行顺序
  1、如果程序的执行满足as-if-serial,即使a happens before b,a执行的结果不需要对b可见,JMM会认为这个执行是合法的
  2、在不改变程序执行结果的条件下,尽可能的提高并发性,JMM很好的遵从了这个目标
  3、在单线程中,编译器和处理器会对控制依赖做重排序,它不会改变执行的结果
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics