Учет времени в Java: с помощью currentTimeMills ()

Сегодня у меня возникла интересная проблема "путешествия во времени", используя следующий код:

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 () основаны на системном таймере, поэтому они не будут монотонными, если системный таймер обновляется (в частности, возвращается обратно). Для таких случаев лучше использовать какой-нибудь интернет-таймер.

7
задан asksw0rder 22 January 2012 в 13:41
поделиться