我是靠谱客的博主 大方银耳汤,最近开发中收集的这篇文章主要介绍java 定时启动 SpringBoot+Scheduled 和CommandLineRunner,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 1.Spring Framework 自身提供了对定时任务的支持, Spring Boot 中 @Scheduled 定时器的使用。

@Configuration
@EnableScheduling
@Slf4j
public class Scheduled {
@Autowired
private CeShiService ceShiService;
public static Map<String,Long> xinTiaoMap = new HashMap<>();
public static void addXinTiaoMap(Map map){
xinTiaoMap.putAll(map);
};
 @Scheduled(fixedRate = 60*1000*5) //5分钟执行一次,只要服务启动会自动执行
public void xintiao(){
for (String key : xinTiaoMap.keySet()) {
long value = xinTiaoMap.get(key);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("type", "定时任务");
queryWrapper.eq("ip", key);
Devices devices = ceShiService.getOne(queryWrapper);
try {
if (devices != null) {
long currentMilliSeconds = System.currentTimeMillis();//当前系统毫秒值
System.out.println("currentMilliSeconds-xintiaoMilliSeconds==" + (currentMilliSeconds - value));
} catch (Exception e) {
e.getMessage();
}
}
}

 2.启动时调用定时任务执行

@Component
public class Init implements CommandLineRunner {//平常开发中有可能需要实现在项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中
@Override
public void run(String... args) throws Exception {
TimedTask();//定时任务
}
public void TimedTask(){
// 创建任务队列
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); // 10 为线程数量
// 执行任务
scheduledExecutorService.scheduleAtFixedRate(() -> {
        System.out.println("定时任务已执行");
}, 1, 120, TimeUnit.SECONDS); // 1s 后开始执行,每 2分钟(120秒) 执行一次
}
}

最后

以上就是大方银耳汤为你收集整理的java 定时启动 SpringBoot+Scheduled 和CommandLineRunner的全部内容,希望文章能够帮你解决java 定时启动 SpringBoot+Scheduled 和CommandLineRunner所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部