springboot 多线程定时任务同时执行修改有的未执行是什么原因

springboot 多线程定时任务(我配置14个定时任务,每个里边都有一个修改时间的方法),第一次启动时14个都执行了一遍,执行正常,cron 有的时间是设置30秒,有的时间是一分钟,  5分钟后再去看表里的时,会发现有的时间没有改,有的跑的是正常的,有一些sql 执行失败了,这是什么原因。

package com.krd.zhsq.quartz;

import com.krd.zhsq.collection.entity.QrtzCronTask;
import com.krd.zhsq.collection.mapping.QrtzCronTaskMapper;
import com.krd.zhsq.collection.service.QrtzCronTaskService;
import com.krd.zhsq.quartz.service.*;
import com.krd.zhsq.statistics.service.StatisticsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;
import java.util.concurrent.Executors;

@Configuration
@EnableScheduling
public class CompleteScheduleConfig implements SchedulingConfigurer {


    @Autowired
    private QrtzCronTaskMapper cronMapper;
    @Autowired
    private CaculateTaskService smsSendTask;
    @Autowired
    private CaseWarningTaskService caseWarningTask;
    @Autowired
    private RedWarningTaskService redWarningTask;
    @Autowired
    private JpushTaskService jpushTask;
    @Autowired
    private WebSocketTaskService webSocketTask;
    @Autowired
    private RealDayDataTaskService realDayDataTask;
    @Autowired
    private PatrolExamineTaskService patrolExamineTask;
    @Autowired
    private EpidemicPreventionTaskService epidemicPreventionTask;
    @Autowired
    private CaculateTaskService caculateTask;
    @Autowired
    private SixRealCaculateTaskService sixRealCaculateTask;
    @Autowired
    private SixRealCaculateForJDTaskService sixRealCaculateForJDTask;
    @Autowired
    private StatOnlineTaskService statOnlineTask;
    @Autowired
    private ZhibiaoScoreTaskService zhibiaoScoreTask;
    @Autowired
    private StatisticsService statisticsService;
    @Autowired
    private QrtzCronTaskService qrtzCronTaskService;
    private int id;
    private QrtzCronTask qrtzCronTask = new QrtzCronTask();




    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        /**
         * 线程池设置:有几个定时任务设置几个线程,设置少了会造成线程阻塞
         */
        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(20));

        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () ->smsSendTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                  //  System.out.print("短信定时任务1"+LocalDateTime.now().toLocalTime());
                    //2.1 从数据库获取执行周期时间
                    id=1;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    qrtzCronTaskService.updateQrtzCronTask(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );



      
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> caseWarningTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=2;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> redWarningTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=3;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


    
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> jpushTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=4;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );



        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> webSocketTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=5;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


    
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> realDayDataTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=6;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> patrolExamineTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=7;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


    
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> epidemicPreventionTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=8;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );

        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> caculateTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=9;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );

  
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> sixRealCaculateTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=10;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );



    
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> sixRealCaculateForJDTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=11;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );


  
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> statOnlineTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 从数据库获取执行周期时间
                    id=12;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );



  
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> zhibiaoScoreTask.run(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 根据任务cron_id从数据库获取执行周期时间
                    id=13;
                    String cron = cronMapper.getCronTask(id);
                    //运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );

 
        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> statisticsService.HouseDetail(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 根据任务cron_id从数据库获取执行周期时间
                    id=14;
                    String cron = cronMapper.getCronTask(id);
                    //更新运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );*/


        taskRegistrar.addTriggerTask(
                //1.添加任务内容(Runnable)
                () -> statisticsService.searchGridmemberStatistics(),
                //2.设置执行id(表cron_rd字段)
                triggerContext -> {
                    //2.1 根据任务cron_id从数据库获取执行周期时间
                    id=15;
                    String cron = cronMapper.getCronTask(id);
                    //更新运行时间
                    qrtzCronTask.setExecutiontime(new Date());
                    qrtzCronTask.setCronId(String.valueOf(id));
                    cronMapper.updateTime(qrtzCronTask);
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );



    }
}

 

多打一些日志吧,结合日志分析