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);
    }
经验分享 程序员 微信小程序 职场和发展