Сегодня у меня возникла интересная проблема "путешествия во времени", используя следующий код:
for (int i = 0; i < 1; i++){
long start = System.currentTimeMillis();
// Some code here
System.out.print(i + "\t" + (System.currentTimeMillis() - start));
start = System.currentTimeMillis();
// Some code here
System.out.println("\t" + (System.currentTimeMillis() - start));
}
И я получил результат
0 15 -606
И кажется что это не повторяется. У кого-нибудь есть какие-либо подсказки о том, что происходило внутри во время работы? Просто любопытно ...
Новое редактирование: я использовал небольшой тест, чтобы подтвердить ответы ниже. Я запускаю программу и меняю системное время во время прогона и, наконец, повторить «путешествие во времени»:
0 -3563323 163
Дело закрыто. Спасибо, ребята!
Еще слова: и currentTimeMillis (), и nanoTime () основаны на системном таймере, поэтому они не будут монотонными, если системный таймер обновляется (в частности, возвращается обратно). Для таких случаев лучше использовать какой-нибудь интернет-таймер.