使用 @Scheduled
注解
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
}
- 注意这里的
fixedRate = 5000
是指每两次任务开始执行的间隔,也就是说前一个任务在5000ms时无论有没有结束,后一个任务都开始执行。 - 另外有个
fixedDelay
参数,这是指前一个任务结束后延迟多长时间再执行下一个任务。 - 我们可以利用
initialDelay
参数来设置延迟多长时间后执行第一次任务。比如这样:
@Scheduled(initialDelay=1000, fixedRate=5000)
public void doSomething() {
}
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
}
记得在启动类加上 @EnableScheduling
注解开启计划任务
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class);
}
}