System.currentTimeMillis()
is not safe for elapsed time because this method is sensitive to the system realtime clock changes of the system.
You should use System.nanoTime
.
Please refer to Java System help:
About nanoTime method:
.. This method provides nanosecond precision, but not necessarily nanosecond resolution (that is, how frequently the value changes) - no guarantees are made except that the resolution is at least as good as that of currentTimeMillis()..
If you use System.currentTimeMillis()
your elapsed time can be negative (Back <-- to the future)