0

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

4

2 回答 2

2

Java SE7 文档

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

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

于 2013-05-23T20:27:47.213 回答
1

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

于 2013-05-23T20:28:43.323 回答