System/currentTimeMillis is not guaranteed to progress monotonically. NTP shifts, leap seconds, and manual system time changes can all cause elapsed time calculations to be incorrect if you use
currentTimeMillis.
nanoTime is always calculated against a fixed point and proceeds monotonically.
System/currentTimeMillis is not guaranteed to progress monotonically. NTP shifts, leap seconds, and manual system time changes can all cause elapsed time calculations to be incorrect if you use currentTimeMillis.
nanoTime is always calculated against a fixed point and proceeds monotonically.
https://go.googlesource.com/proposal/+/master/design/12914-monotonic.md has a good discussion on monotonic time.