天天看点

ScheduledExecutorService与Timer的方法比较

ScheduledExecutorService与Timer都有scheduleAtFixedRate方法

一、相同名称的方法

scheduleAtFixedRate

ScheduledExecutorService 的 scheduleAtFixedRate(Runnable command,long initialDelay,long period1,TimeUnit unit) 与Timer 的 scheduleAtFixedRate(TimerTask task, long delay, long period2) 功能是一样的:

在initialDelay/delay后第一次执行command/task;

然后在第一次开始执行command/task的时间点开始算,period1/period2后第二次执行command/task;

然后在第二次开始执行command/task的时间点开始算,period1/period2后第三次执行command/task;

然后在第三次开始执行command/task的时间点开始算,period1/period2后第四次执行command/task;

...

...

...

如果delay/period后的时间点上一次的command/task还没有执行完,那么会等到上一次的执行完,才会开始下一次的执行。

二、ScheduledExecutorService的方法

scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit)功能为:

在initialDelay后第一次执行command;

然后在第一次结束执行command的时间点开始算,delay后第二次执行command;

然后在第二次结束执行command的时间点开始算,delay后第三次执行command;

然后在第三次结束执行command的时间点开始算,delay后第四次执行command;

...

...

...