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;
...
...
...