繁体   English   中英

Timer vs. ScheduledExecutorService 调度

[英]Timer vs. ScheduledExecutorService scheduling

ScheduledExecutorService的推荐用途之一是直接替代 计时器class,正如许多StackOverflow主题中已经讨论的那样:

但是, ScheduledExecutorServiceTimer支持的方法的命名约定并不相同。 例如,尽管它们都有一个scheduleAtFixedRate()方法,但 Timer 方法

  • schedule(TimerTask task, long delay, long period)

没有同名对应物。

ScheduledExecutorService方法

  • scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)

代替使用的那个?

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate(java.lang.Runnable,%20long,%20long,%20java.util.concurrent.TimeUnit )

创建并执行一个周期性动作,该动作首先在给定的初始延迟后启用,随后在一个执行终止和下一个执行开始之间具有给定的延迟。

https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#schedule(java.util.TimerTask,%20long,%20long)

为重复的固定延迟执行安排指定的任务,在指定的延迟之后开始。 随后的处决以指定时间间隔的大致规则间隔进行。

我会说 - 是的;-)

Timer#schedule(TimerTask, long, long)ScheduledExecutorService或其实现ScheduledThreadPoolExecutor中没有对应项。 尽管此方法被记录为

重复固定延迟执行,

它与ScheduledThreadPoolExecutor#scheduleWithFixedDelay(...)根本不同,更不用说ScheduledThreadPoolExecutor#scheduleAtFixedRate(...) 作为此答案的一部分,我已经更详细地解释了所有这些方法之间的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM