1、使用quartz框架可以实现并发执行
public class TestJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("TestJob TEST开始");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("TestJob TEST结束");
}
}
@Configuration
public class QuartzConfig {
/**
* 声明一个任务
* @return
*/
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob(TestJob.class)
.withIdentity("TestJob", "test")
.storeDurably()
.build();
}
/**
* 声明一个触发器,什么时候触发这个任务
* @return
*/
@Bean
public Trigger trigger() {
return TriggerBuilder.newTrigger()
.forJob(jobDetail())
.withIdentity("trigger", "trigger")
.startNow()
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?"))
.build();
}
}
2、使用注解
@DisallowConcurrentExecution
可以禁止使用并发执行。