我是靠谱客的博主 大方银耳汤,最近开发中收集的这篇文章主要介绍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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复