ScheduledThreadPoolExecutor定时任务的创建
ScheduledThreadPoolExecutor定时任务的创建
//指定线程池数量
public static ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(10,
new BasicThreadFactory.Builder().namingPattern("task-schedule-pool-%d").daemon(true).build());
@PostConstruct //service注入后自动执行
public void start(){
//本地环境不执行
if(System.getProperty("os.name").toLowerCase().startsWith("windows")){
return;
}
//每天8:50执行
long oneDay = 24 * 60 * 60 * 1000;
long initDelay = getTimeMillis("08:50:00") - System.currentTimeMillis();
initDelay = initDelay > 0 ? initDelay : oneDay + initDelay;
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
try {
logger.info("执行定时任务:{}", DateUtils.getTodayByType("yyyy-MM-dd HH:mm:ss"));
} catch (Exception e) {
e.printStackTrace();
}
}
}, initDelay,oneDay, TimeUnit.MILLISECONDS);
}
上一篇:
IDEA上Java项目控制台中文乱码
