码迷,mamicode.com
首页 > 其他好文 > 详细

JVM指令重排

时间:2017-05-30 15:59:10      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:变量   解锁   join   程序   rup   指令   nal   串行   art   

指令重排的基本原则:

  a.程序顺序原则:一个线程内保证语义的串行性
  b.volatile规则:volatile变量的写,先发生于读
  c.锁规则:解锁(unlock)必然发生在随后的加锁(lock)前
  d.传递性:A先于B,B先于C 那么A必然先于C
  e.线程的start方法先于它的每一个动作
  f.线程的所有操作先于线程的终结(Thread.join())
  g.线程的中断(interrupt())先于被中断线程的代码
  h.对象的构造函数执行结束先于finalize()方法

 

写后读 a = 1;b = a; 写一个变量之后,再读这个位置。
写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。
读后写 a = b;b = 1; 读一个变量之后,再写这个变量。
以上语句不可重排


可重排: a=1;b=2;

JVM指令重排

标签:变量   解锁   join   程序   rup   指令   nal   串行   art   

原文地址:http://www.cnblogs.com/413xiaol/p/6920258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!