SpringBoot2.x简单实现定时任务功能
1、新建一个SpringBoot项目
可以使用https://start.spring.io/快速新建一个SpringBoot项目。
本教程使用的是2.7.4版本
2、启动类启用定时
在启动类上面加上@EnableScheduling即可开启定时
@EnableScheduling
@SpringBootApplication
public class CanalStatisticsApplication {
public static void main(String[] args) {
SpringApplication.run(CanalStatisticsApplication.class, args);
}
}
3、新建一个ScheduledService.java类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
* @author wumeng 2022/6/16 2:40 下午
*/
@Service
public class ScheduledService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 上一次开始执行时间点之后5秒再执行
* */
@Scheduled(fixedRate = 5000)
public void scheduled1() {
logger.info("=====>>>>>使用fixedRate执行定时任务");
}
/**
* 上一次执行完毕时间点之后10秒再执行
*/
@Scheduled(fixedDelay = 10000)
public void scheduled2() {
logger.info("=====>>>>>使用fixedDelay执行定时任务");
try {
Thread.sleep(5 * 1000);
}
catch (InterruptedException e){
e.printStackTrace();
}
//加上延迟的5秒,总计 15秒执行一次
}
/**
* 每隔6秒执行一次
* 详见cron表达式
* 秒 分 时 日 月 周几
* 0 52 16 * * ? 每天16:52:00执行一次
* 30 0/5 10,18 * * ? 每天的10点和18点,每隔5分钟执行一次
* */
@Scheduled(cron="*/6 * * * * ?")
private void scheduled3(){
logger.info("使用cron执行定时任务");
}
}
@Scheduled(fixedRate = 6000) :上一次开始执行时间点之后6秒再执行
@Scheduled(fixedDelay = 6000) :上一次执行完毕时间点之后6秒再执行
@Scheduled(initialDelay=1000, fixedRate=6000) :第一次延迟1秒后执行,之后按fixedRate的规则每6秒执行一次
@Scheduled(cron=“”):详见cron表达式
4、多线程执行定时任务
默认的是单线程执行,如果想实现多线程可以再application.properties文件添加一下配置
# 定时任务线程为100
spring.task.scheduling.pool.size=100
到此运行项目就可以看到任务的打印输出了。