Ну, во-первых, более простой способ вычисления разницы заключается в использовании чего-то вроде System.currentTimeMillis()
или System.nanoTime()
- таким образом, вам не нужно ничего делать, кроме простого вычитания, чтобы получить числомиллисекунды или число наносекунд между началом и концом.
Однако, если ваши системные часы обновляются с помощью NTP или чего-то подобного, тогда время от времени может эффективно возвращаться назад - в зависимости от того, как обрабатывается перекос часов.(Некоторые системы просто на некоторое время замедляют системные часы, чтобы вернуть их к реальности; у других могут быть разрывы.)
Я не уверен, что лучше всего избежать этого - я не поверьте JRE в настоящее время имеет что-то, эквивалентное Stopwatch
в .NET, которое предназначено исключительно для измерения интервалов и не (как я полагаю) не испортит изменение системных часов.
(Iследуйте рекомендациям Эрика Время Джода , кстати - хотя я не думаю, что вам это нужно для этой конкретной проблемы.)