gpt4 book ai didi

java - schedule 和 scheduleAtFixedRate 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 21:14:34 27 4
gpt4 key购买 nike

Timer类的这2个方法有什么区别:

schedule(TimerTask task, long delay, long period)

scheduleAtFixedRate(TimerTask task, long delay, long period)

Documentation并不清楚它们之间的区别。

最佳答案

文档确实解释了差异:

时间表:

In fixed-delay execution, each execution is scheduled relative to the actual execution time of the previous execution. If an execution is delayed for any reason (such as garbage collection or other background activity), subsequent executions will be delayed as well.

所以,假设延迟是 5 秒,每个任务需要 2 秒,你会得到

TTWWWTTWWWTTWWWTT

其中T表示任务执行1秒,W表示1秒等待。

但是现在假设发生了一次long GC(由一个G表示)并延迟了第二个任务,第三个将在第二个开始后5秒开始,就好像long GC没有发生:

TTWWWGGTTWWWTTWWWTT

第三个任务在第二个任务后 5 秒开始。

scheduleAtFixedRate:

In fixed-rate execution, each execution is scheduled relative to the scheduled execution time of the initial execution. If an execution is delayed for any reason (such as garbage collection or other background activity), two or more executions will occur in rapid succession to "catch up.".

因此,使用与上述相同的延迟和相同的 GC,您将得到

TTWWWGGTTWTTWWWTT

第三个任务任务在第二个任务之后 3 秒而不是 5 秒开始,以 catch 。

关于java - schedule 和 scheduleAtFixedRate 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com