该文档确实解释了差异:
时间表:
在固定延迟执行中,相对于上一次执行的实际执行时间安排每次执行。如果执行由于任何原因(例如垃圾回收或其他后台活动)而延迟,则后续执行也将延迟。
因此,假设延迟为5秒,并且每个任务花费2秒,您将获得
TTWWWTTWWWTTWWWTT
其中
T表示执行任务需要
W1秒,表示等待1秒。
但现在假设发生了一个长GC(用表示
G)并延迟了第二个任务,那么第三个任务将在第二个任务开始后的5秒后开始,就好像长GC并没有发生:
TTWWWGGTTWWWTTWWWTT
第三项任务在第二项任务之后5秒开始。
scheduleAtFixedRate:
在固定速率执行中,相对于初始执行的计划执行时间来计划每个执行。如果执行由于任何原因(例如垃圾回收或其他后台活动)而延迟,则将快速连续发生两个或更多个执行以“追赶”。
因此,与上述相同的延迟和相同的GC,您将获得
TTWWWGGTTWTTWWWTT
第三个任务任务从第二个任务之后的5秒开始而不是3秒开始追赶。



