设置同时启动多线程任务【启动文件】
@EnableScheduling public class Application { public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); app.addListeners(new ApplicationStartedEventListener()); app.run(args); } }
@Bean public TaskScheduler taskScheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(PublicAttribute.BATCH);//设置[Scheduling]线程数,可以根据需求调整 return taskScheduler; }
package com.zichan360.laberule.config; import com.alibaba.druid.util.StringUtils; import com.zichan360.laberule.dao.BusinessCaseLabelMapper; import com.zichan360.laberule.dao.LabelDataSourceMapper; import com.zichan360.laberule.service.impl.ILabelTaskRuleServiceImpI; import com.zichan360.laberule.util.DBUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; /** * @ClassName CompleteScheduleConfig * @Description: * @Author chongmengzhao * @Date 2020/3/23 **/ //@Configuration //@EnableScheduling public class CompleteScheduleConfig implements SchedulingConfigurer { private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); @Autowired private ILabelTaskRuleServiceImpI labelTaskRuleService; @Autowired private LabelDataSourceMapper labelDataSourceMapper; @Autowired private BusinessCaseLabelMapper businessCaseLabelMapper; /** * 执行定时任务. */ @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { try { labelTaskRuleService.queryScheduledTask().forEach((task)->{ taskRegistrar.addTriggerTask( //1.执行入库 () -> new DBUtil().insertMySql(task,labelDataSourceMapper,businessCaseLabelMapper), //2.设置执行周期(Trigger) triggerContext -> { //2.2 合法性校验. if (StringUtils.isEmpty(task.getJobCron())) { // Omi