SpringBoot定时任务
一、基于注解
@Configuration
@EnableScheduling
public class TimedTaskDemo {
@Scheduled(cron = "0/10 * * * * ?")
private void timedTask() {
System.err.println("执行任务时间: " + LocalDateTime.now());
}
@Scheduled(fixedRate=10000)
private void timedTask() {
System.err.println("执行任务时间: " + LocalDateTime.now());
}
}
二、基于接口
@Configuration
@EnableScheduling
public class TimedTaskDemo implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(
() -> System.out.println("执行定时任务: " + LocalDateTime.now()),
triggerContext -> {
String cron = ;
if (StringUtils.isEmpty(cron)) {
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
);
}
}
三、多线程定时任务
@Component
@EnableScheduling
@EnableAsync
public class TimedTaskDemo {
@Async
@Scheduled(fixedDelay = 1000)
public void first() throws InterruptedException {
System.out.println("第一个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
System.out.println();
Thread.sleep(1000 * 10);
}
@Async
@Scheduled(fixedDelay = 2000)
public void second() {
System.out.println("第二个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName());
System.out.println();
}
}