指令重排序问题,求大神解答
1、long start =System.currentTimeMillis();
long end=System.currentTimeMillis();
start和end没有关联关系,出现重排序,处理器中end先于start执行
最后会不会出现end早于start的结果
2、一个线程里
void test(){
a();-------------->数据库查询表A
b();-------------->数据库修改表B
}
原逻辑是A查询出现异常程序就结束了。现在出现重排序,B方法先执行了(表B修改了),然后才执行A方法出现异常程序结束
这样是不是异常结束前就会出现两种结果:1、表B修改了 2、表B没修改