0

2 つの時間値の 1 つが System. currentTimeMillis() つまり、それthe difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTCは System.nanoTime() を使用してフェッチされますcurrent value of the running Java Virtual Machine's high-resolution time source, in nanoseconds

どうすればいいですか?

4

2 に答える 2

4

これは不可能です。あなたはナノタイムとその目的を誤解しています。

ドキュメントから:

このメソッドは、経過時間を測定するためにのみ使用でき、システム時間またはウォールクロック時間の他の概念とは関係ありません。返される値は、固定された任意の時間からのナノ秒を表します (おそらく将来であるため、値は負の可能性があります)。この方法はナノ秒の精度を提供しますが、必ずしもナノ秒の精度ではありません。値が変更される頻度については保証されません。約 292 年 (2 63ナノ秒) を超える連続する呼び出しの違いは、数値のオーバーフローのため、経過時間を正確に計算できません。

于 2013-12-10T15:00:11.387 に答える
1

それらを比較することはできません。それらはリンゴとオレンジであり、同じスケールまたは同じ時点に関して測定されていません。特に、whilecurrentTimeMillis()は 1970 年 1 月 1 日 00:00:00Z からのミリ秒単位nanoTime()であり、マシンや JVM などの起動時間から測定されます。

両方のメソッドを同時に呼び出して相関を確認すると、後で同様の相関を行うことができますが、これがほぼ唯一の方法であり、正確であるとは限りません。

于 2013-12-10T15:01:07.930 に答える