Java System.currentTimeMillis()在windows XP上不准确?

Java System.currentTimeMillis()在windows XP上不准确?,java,time,Java,Time,似乎是系统。currentTimeMillis不是很准确 请参见此示例: public class MillisTime { public static void main(String[] args) { long start = 0; long end = 0; while (true) { if (start == 0) { start = System.currentTimeM

似乎是
系统。currentTimeMillis
不是很准确

请参见此示例:

public class MillisTime {
    public static void main(String[] args) {
        long start = 0;
        long end = 0;
        while (true) {
            if (start == 0) {
                start = System.currentTimeMillis();
            } else {
                long current = System.currentTimeMillis();
                if (current != start) {
                    end = current;
                    break;
                }
            }
        }
        System.out.println("The time interval of your OS: " + (end - start) + "ms");
    }
}
结果是(在Windows XP上):


为什么不是
1ms
?如何获得精确的当前时间毫秒?

这完全是意料之中的。您可以在.NET上使用
DateTime.Now
看到同样的内容。(有关同一主题的面向.NET的视图,请参见Eric Lippert的。)

你可以用它来获得一个更精确的计时器,它只用于测量时间间隔,而不是给出一个绝对时间

我不知道如何从Java或Win32中获得更精确的绝对时间。老实说,系统时钟到底有多精确?即使定期与NTP服务器同步,我也希望至少有几毫秒的不准确


基本上,如果你想要准确地获得绝对时间,你应该改变你的设计。

这完全是意料之中的。您可以在.NET上使用
DateTime.Now
看到同样的内容。(有关同一主题的面向.NET的视图,请参见Eric Lippert的。)

你可以用它来获得一个更精确的计时器,它只用于测量时间间隔,而不是给出一个绝对时间

我不知道如何从Java或Win32中获得更精确的绝对时间。老实说,系统时钟到底有多精确?即使定期与NTP服务器同步,我也希望至少有几毫秒的不准确


基本上,如果您希望获得真正准确的绝对时间,您可能应该更改您的设计。

在windows上使用java无法获得更准确的时间。

在windows上使用java无法获得更准确的时间。

是的。
System.currentTimeMillis()的javadoc说明:

以毫秒为单位返回当前时间。请注意,虽然 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒


您可以使用
System.nanoTime()
,但一定要阅读其javadoc以了解其局限性。

是。
System.currentTimeMillis()的javadoc说明:

以毫秒为单位返回当前时间。请注意,虽然 返回值的时间为毫秒,即 值取决于基础操作系统,可能更大。 例如,许多操作系统以数十秒为单位测量时间 毫秒


您可以使用
System.nanoTime()
,但请务必阅读其javadoc以了解其局限性。

为什么在2012年无法获得windows以外的准确时间。我用ms times记录事情,这样我就可以看到事情运行需要多长时间。我需要看看是否有些事情需要2毫秒对7毫秒,这样我就可以进行调整,但在windows中这是完全不可能的。还有人认为这很疯狂吗?(我是一个unix weenie,我以前从来没有遇到过这个问题。)@stu:简单地说,你不应该把挂钟当作秒表。一个挂钟是为了给你一个很好的代表性的当前时间;它不是为测量时间上的微小差异而设计的。这正是nanoTime的用途。为什么在2012年无法从windows中获得准确的时间。我用ms times记录事情,这样我就可以看到事情运行需要多长时间。我需要看看是否有些事情需要2毫秒对7毫秒,这样我就可以进行调整,但在windows中这是完全不可能的。还有人认为这很疯狂吗?(我是一个unix weenie,我以前从来没有遇到过这个问题。)@stu:简单地说,你不应该把挂钟当作秒表。一个挂钟是为了给你一个很好的代表性的当前时间;它不是为测量时间上的微小差异而设计的。这正是纳米时间的用途。
The time interval of your OS: 15ms