[英]Date.getTime() giving a time of 2000 1st Jan
我已經在幾台筆記本電腦中觀察到這種異常行為。 我在開發的應用程序中運行時遇到一些問題。 在調試時,我們發現新的Date.getTime()指向舊的date。 之后,我們嘗試在這些計算機上運行一個小程序。 以下是我們使用的代碼。
import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;
public class Test {
public static void main(String... args) {
System.out.println(new Date().getTime());
ConcurrentHashMap chm = new ConcurrentHashMap();
for (int i = 0; i < 100000; i++) {
chm.put(i, new Date().getTime());
if (Long.parseLong(String.valueOf(chm.get(i))) < 1332334082344l) {
System.out
.println(Long.parseLong(String.valueOf(chm.get(i))));
}
}
System.out.println("dONE "+chm.size()+" "+chm.get(1000));
}
}
如果是少數情況,輸出類似於“ 946684800617”。 當我們看到日期時,它指向2000年1月1日和幾毫秒。 這並非在所有筆記本電腦中都發生。
想知道為什么會這樣,以便我們可以解決它。
PS:我們正在使用Windows 7(專業版),聯想ThinkPad L420
這樣並不能回答您的問題,但是您的代碼是如此復雜,可能會產生意想不到的后果。 您可以嘗試運行相同的功能嗎?
public class Test {
public static void main(String... args) {
int length = 100000;
System.out.println(System.currentTimeMillis());
long[] times = new long[length];
for (int i = 0; i < length; i++) {
times[i] = System.currentTimeMillis();
if (times[i] < 1332334082344L)
System.out.println(times[i]);
}
System.out.println("Done " + times.length + " " + times[1000]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.