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); }