Java 是否获得方法的不同持续时间结果?

Java 是否获得方法的不同持续时间结果?,java,Java,我有一个简单的程序来测量一个方法的处理时间。但是,每次跑步我都会得到不同的结果。 即使我只是打印出“Hello”字符串,我也会得到不同的结果。我想我会得到同样的结果。你能解释一下吗 public static void run() throws Exception { double start = System.nanoTime(); System.out.println("Hello"); // other operation double end = Syst

我有一个简单的程序来测量一个方法的处理时间。但是,每次跑步我都会得到不同的结果。 即使我只是打印出“Hello”字符串,我也会得到不同的结果。我想我会得到同样的结果。你能解释一下吗

public static void run() throws Exception {
    double start = System.nanoTime();
    System.out.println("Hello");
    // other operation
    double end = System.nanoTime();
    System.out.println(end - start);
}
第一个结果:112573.0
第二个结果:122195.0
第三个结果:293140.0

From the Java Documentation:

public static long nanoTime()
返回最精确的可用系统计时器的当前值(以纳秒为单位)

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示从某个固定但任意的时间开始的纳秒(可能在将来,因此值可能是负数)。该方法提供纳秒精度,但不一定是纳秒精度。无法保证值的更改频率。由于数字溢出,连续调用的差异超过大约292年(263纳秒)将无法准确计算经过的时间


因此,
nanoTime
可以产生不同的时间。

由于系统资源和分配时间的不同,您所经历的时间差异。
System.out.println(“”)
始终占用相同的时间,但根据当时分配的系统资源,运行时间不同

由于系统资源和分配时间的原因,您看到的时间并不总是恒定的。。输出函数总是占用相同的时间,但取决于当时分配的系统资源,运行时会有所不同。@ADi请提供解释作为答案。system.currentTimeMillis()如何?@ADi它以毫秒为单位返回当前时间。此方法返回以毫秒为单位的差异,在当前时间和1970年1月1日午夜UTC(协调世界时)之间。我知道,它是否有与nanotime相同的错误??我想,它已经为JVM分配了
max,min内存。即使分配了其他资源,JVM也有特定的分配。是的,我同意。但问题不在于内存,而在于资源的可用性,有时还涉及处理器资源。