深入理解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、 在单线程中,编译器和处理器会对控制依赖做重排序,它不会改变执行的结果

你可能感兴趣的:(java,jvm)