定时任务模块可能也是大部分的系统不可或缺的一个功能模块,定时任务顾名思义就是按照一定的时间规则重复的去执行某项特定的任务,从而实现我们系统的某种实际的需求。那么定时任务在springboot框架中该如何实现呢?下面我们将就springboot集成定时任务这一知识点展开讲解。
定时任务的几种实现方式
1、Timer
Timer是java自带的java.util.Timer类,使用这个类可以允许调用一个java.util.TimerTask任务,且只能按照一个指定的频率进行调用,不能在指定的时间内运行,在实际的项目中基本不适用这种方式。
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTaskDemo {
public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("task run:" + new Date());
}
};
/**
* @param delay 执行任务前的延迟时间,单位:毫秒
* @param period 执行一次task的间隔时间,单位:毫秒
* @example 比如现在的时间是2020-08-06 18:00:00 则在2020-08-06 18:00:00执行第一次task,之后每次间隔3秒执行
*/
Timer timer = new Timer();
timer.schedule(timerTask, 1000, 3000);
}
}
2、ScheduledExecutorService
jdk自带的一个类,基于线程池设计的定时任务类,每个调度的任务都会分配到线程池中的一个线程去执行,任务是并发执行的,相互之间互不影响。
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorService {
public sta