Java 当延迟为0时,Timer.schedule会安排多长时间?

Java 当延迟为0时,Timer.schedule会安排多长时间?,java,time,scheduling,undefined-behavior,Java,Time,Scheduling,Undefined Behavior,在中,它表示如果delay为负,它将抛出,但没有说明delay是否为零。会发生什么?我在openjdk上试过,它立刻就运行了。这种行为是在其他地方指定的,还是未定义的(例如,在其他实现中它意味着无限,或者某些实现有时会无限,有时会瞬时)?来自: 如果延迟小于或等于零,计时器将在启动后立即启动 因此,您得到的结果是预期的行为。来自: 如果延迟小于或等于零,计时器将在启动后立即启动 因此,您得到的结果就是预期的行为。我相信java中的计时器是一个带有任务队列的线程。项目在任务队列中按其应触发的时间排

在中,它表示如果
delay
为负,它将抛出,但没有说明
delay
是否为零。会发生什么?我在openjdk上试过,它立刻就运行了。这种行为是在其他地方指定的,还是未定义的(例如,在其他实现中它意味着无限,或者某些实现有时会无限,有时会瞬时)?

来自:

如果延迟小于或等于零,计时器将在启动后立即启动

因此,您得到的结果是预期的行为。

来自:

如果延迟小于或等于零,计时器将在启动后立即启动


因此,您得到的结果就是预期的行为。

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

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