我今天得到了一個有趣的「時間旅行」的問題,使用下面的代碼:時間的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()都是基於系統定時器的,所以如果系統定時器更新(具體返回),它們將不是單調的。這種情況下最好使用一些基於互聯網的定時器。
不確定'currentTimeMillis'是單調的。用System.nanoTime()'可能會有更好的結果,它專門用於測量間隔。 – Rom1
@ asksw0rder:你可以再次運行相同的程序並更新第二個輸出是什麼? –
@ asksw0rder變量i是什麼?它有什麼價值?在第一個輸出中獲得0是沒有意義的。 – sfrj