import java.util.Random;public class Test2 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long time1=1,time2=1;
time1=time1();
try{
Thread.sleep(2000);
}catch(Exception e){
}
Test2 t=new Test2();
time2=t.time2();
System.out.println(time2-time1);
}
public static long time1(){
long time = System.currentTimeMillis();
return time;
}
public long time2(){
long time = System.currentTimeMillis();
return time;
}
} 直接运行的话,结果为0,而debug一步一步的执行直至完毕的话结果就不为0了!!
这是什么原因,这些代码块在内存中是如何加载执行的?哪个高手能解释一下?
time2=t.time2();换成time2 = time1();也是2000
结果为0可能是sleep失败了。一步一步执行时,两次取当前时间肯定是由你来控制了,你一步一步按的慢了,当然差的就多了。而直接执行时,速度基本在固定。
time2 = t.time2();这两句占用的时间 ,可是 0 就难以理解了 是不是
两个取时间 一个用静态 一个用非静态的 ? 改改看 还会不会有问题
关于调试产生结果不一样的问题,因为System.currentTimeMillis();取的是当前毫秒时间,
当你在调试的时候时间也在流逝、直到运行到第二个System.currentTimeMillis();的时候、这个当前毫秒时间已经不能固定了,所以导致这样一个问题