Timer.schedule在延迟为0时安排多长时间?

时间:2013-05-23 20:21:03

标签: java time scheduling undefined-behavior

Timer.schedule(TimerTask task, long delay)中,它表示如果delay为否定则会抛出,但是如果delay为零则没有说明。会发生什么?我尝试了openjdk并立即运行。这个行为是在其他地方指定的,还是未定义的(例如,它在其他实现上意味着无限,或者某些实现有时会做无限且有时是无限的)?

2 个答案:

答案 0 :(得分:2)

来自the Java SE7 documentation

  

如果延迟小于或等于零,则计时器一启动就会触发

所以你得到的结果就是预期的行为。

答案 1 :(得分:1)

我相信java中的Timer是一个带有任务队列的线程。项目在任务队列中按其应该触发的顺序排序。延迟为0的任务应该立即触发,从而进入队列的顶部。我相信你所看到的行为是预期的,应该是跨平台和不同的jdks一致