我在几台笔记本电脑上观察到这种不寻常的行为。我在我们开发的应用程序中运行时遇到了一些问题。在调试时我们发现 new 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 (pro),Lenovo 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]);
}
}
关于java - Date.getTime() 给出时间 2000 年 1 月 1 日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988782/