1

给定以下 Java 代码:

class Tester
    {
    public static void main(String[] args)
        {
        System.out.println((System.nanoTime()/1000));
        System.out.println(System.currentTimeMillis());
        }
    }

它给出了一个输出

2626051678558
1377785791569

我期待两者之间有一点区别,但我错了。
你知道伙计们为什么会这样吗?

4

4 回答 4

7

阅读方法的javadoc

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示自某个固定但任意的原始时间以来的纳秒(可能在将来,因此值可能为负数)。在 Java 虚拟机实例中,此方法的所有调用都使用相同的来源;其他虚拟机实例可能使用不同的来源。

nanoTime()没有显示时间。

于 2013-08-29T14:31:56.277 回答
0

正如 java 文档所说,nanoTime() 是一个精确计时器。currentTimeMillis() 不是计时器,它是“挂钟”。nanoTime() 将始终产生正的经过时间, currentTimeMillis 不会(例如,如果您更改日期,达到闰秒等)

于 2015-01-10T16:26:29.343 回答
0
       long currentTimeMillis = System.currentTimeMillis();     
       long nanos = TimeUnit.MILLISECONDS.toNanos(currentTimeMillis);
       System.out.println(nanos);
       System.out.println(TimeUnit.NANOSECONDS.toMillis(nanos)*1000000); 
于 2013-08-29T14:41:58.883 回答
0

如果您使用的是 Android,nanoTime 会受到深度睡眠模式的影响。改用 SystemClock.elapsedRealtime() (返回毫秒)

于 2017-01-05T20:31:32.487 回答