大家运行下这段代码,单步执行时d3-d2,time不为0,直接运行时d3-d2,time为0
各位看看这是为什么import java.util.*;
public class test2 
{
    public static void main(String[] args) 
    {    
        mythread th1 = new mythread();
        th1.start();    }
}
class mythread extends Thread
{
    int n=0;
     public static float sum = 0;
    public void run()
    {
        try
        {
            int n =new Random().nextInt(100000);  //限制在大于10小于1000的数
            if (n<=0)
            {
                n= -n+10;
            }
            else
            {
                n=n+10;
            }            //限制在大于10小于1000的数
            System.out.println("总共"+n+"个数");            Date d1 = new Date();    //获取系统当前时间
            System.out.println("datetime1="+d1.getTime());            float []  nums = new float[n];
            
            for (int i=0;i<n ;i++ )
            {
                nums[i] = new Random().nextFloat()*10000000;                
            }
    
            Date d2 = new Date();   //获取系统当前时间
            System.out.println("datetime2="+d2.getTime());            for (int j = 0;j<n ;j++ )
            {
                sum = sum+nums[j];
            }
            Date d3 = new Date();   //获取系统当前时间
            System.out.println("datetime3="+d3.getTime());
            long time3 = d3.getTime()-d2.getTime();
            System.out.println("sum="+sum);
            System.out.println("d2-d1,time="+(d2.getTime()-d1.getTime()));
            System.out.println("d3-d2,time="+time3);
        }
        catch (Exception err)
        {
            System.out.print(err);
        }
    }
}