public void syncRouteMap() {
Timer timer = new Timer();
SyncRouteMapTask task = new SyncRouteMapTask(routeMapRedisService);
timer.schedule(task, 0, syncTime);
}
SyncRouteMapTask是一个实现了Runnable的类
由于IDEA安装了阿里的Java编程规范检查插件,提示让通过线程池方式创建
public void syncRouteMap() {
ScheduledExecutorService pool = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("appgw-schedule-update-cache-pool-%d").daemon(true).build());
SyncRouteMapTask task = new SyncRouteMapTask(routeMapRedisService);
pool.scheduleAtFixedRate(task, 0, syncTime, TimeUnit.MILLISECONDS);
}
注意: 不管任务执行耗时是否大于间隔时间,scheduleAtFixedRate和scheduleWithFixedDelay都不会导致同一个任务并发地被执行。唯一不同的是scheduleWithFixedDelay是当前一个任务结束的时刻,开始结算间隔时间,如0秒开始执行第一次任务,任务耗时5秒,任务间隔时间3秒,那么第二次任务执行的时间是在第8秒开始。
https://blog.csdn.net/u013851082/article/details/70207640