我想为我的应用创建一个计时器。 示例代码如下所示。 当调用方法datetwo()时,以毫秒为单位显示在main方法中。请帮我解决这个问题
import java.util.Date;
import java.util.Timer;
public class TimerChe {
Timer timer;
static Date date = new Date();
static Date date2 = new Date();
public static void timerMethod(){
new Thread() {
public void run() {
try {
while (true) {
sleep(10000);
datetwo();
}
} catch (InterruptedException ex) {
}
}
}.start();
}
public static void datetwo() {
System.out.println ("OK, It's time to do something!") ;
System.out.println("The Time is " + date2.getTime() + " milliseconds since 1970/01/01");
}
public static void main(String args[]) throws Exception {
System.out.println("The Time is " + date.getTime() + " milliseconds since 1970/01/01" );
System.out.println ("Schedule something to do in the mean time.") ;
timerMethod();
}
}
答案 0 :(得分:3)
您在相同的时刻创建两个Date
,上面有static
个变量。
最好按date.getTime()
或date2.getTime()
替换new Date().getTime()
和System.currentTimeMillis()
。然后它将打印实际时间。
答案 1 :(得分:1)
即使System.currentTimeMillis()也是毫秒级的粒度,它的一致性取决于jvm的实现(除了其他因素)。我的建议是使用System.nanoTime(),虽然你可能会产生一些性能损失。