【发布时间】:2018-09-18 10:00:07
【问题描述】:
我正在尝试每三秒运行一次java.util.Timer,我需要在特定条件下再延迟 2 秒。为了检查这是否可以使用Thread.sleep() 实现,我编写了下面的代码。
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
if (true) { //When this is false timer should continue at 3 second interval.
try {
Thread.currentThread().sleep(2000); //Delay by another 2 seconds.
} catch (Exception ex) {
ex.printStackTrace();
}
}
System.out.println(new Date());
}
}, 0, 3000); //Trigger every 3 seconds.
我希望打印相差 5 秒的时间戳。但我得到了 3 秒的差异。
Tue Sep 18 15:08:17 IST 2018
Tue Sep 18 15:08:20 IST 2018
Tue Sep 18 15:08:23 IST 2018
Tue Sep 18 15:08:26 IST 2018
Tue Sep 18 15:08:29 IST 2018
我错过了什么?
【问题讨论】:
标签: java timer thread-sleep