1.计划线程池
ScheduledExecutorService scheduledExecutorService = Excuters.newSingleThreadScheduledExecutor();
有两个方法
//At Fixed Rate 以固定的速度:经过初始延迟initialDelay,以period时间段间隔执行
scheduledExecutorService.scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) ;
//withFixedDelay 以固定的延迟:初始延迟initialDelay,某次任务执行完毕,经过delay 再执行下一次任务
scheduledExecutorService.scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
1.scheduleAtFixedRate
结果:
初始时间38分47秒,经过5秒延迟+首次1s后,以后每次任务都是间隔10秒。因为间隔是10s ,执行是1s ,1s<10s,所以间隔时间把执行时间给覆盖了。
2.scheduleWithFixedDelay
结果:首次5s延迟+1s ,其后 每次是经过了11s ,因为 是 执行1s ,再经过10s 执行下次任务。两者是串行,上面的是两者并行