定时任务schedule(spring boot )
1. 定时任务
实现方式: SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍。 执行方式: 单线程(串行)------------多个定时任务,一个跑完,其他的才能跑 多线程(并行)
2. 创建定时任务
@Component @EnableScheduling public class ScheduledTest { @Scheduled(cron="0/5 * * * * ?") public void executeFileDownLoadTask() { // 间隔2分钟,执行任务 Thread current = Thread.currentThread(); System.out.println("定时任务1:"+current.getId()); } } 备注: @EnableScheduling :用于发现注解@Scheduled的任务并后台执行; @Scheduled(cron="0 0/2 * * * ?") :用于标注这个方法是一个定时任务的方法,有多种配置可选。cron支持cron表达式,指定任务在特定时间执行;fixedRate以特定频率执行任务;fixedRateString以string的形式配置执行频率。
3. 并行任务和异步任务的配置
@Configuration @EnableScheduling public class ScheduleConfig implements SchedulingConfigurer, AsyncConfigurer { /* * 并行任务 */ public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { TaskScheduler taskScheduler = taskScheduler(); taskRegistrar.setTaskScheduler(taskScheduler); } /** * 并行任务使用策略:多线程处理 * * @return ThreadPoolTaskScheduler 线程池 */ @Bean(destroyMethod = "shutdown") public ThreadPoolTaskScheduler taskScheduler() { ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(20); scheduler.setThreadNamePrefix("task-"); scheduler.setAwaitTerminationSeconds(60); scheduler.setWaitForTasksToCompleteOnShutdown(true); return scheduler; } /* * 异步任务 */ public Executor getAsyncExecutor() { Executor executor = taskScheduler(); return executor; } /* * 异步任务 异常处理 */ public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return new SimpleAsyncUncaughtExceptionHandler(); } }
备注:
SchedulingConfigurer: 将线程池注入TaskScheduler,并与ScheduledTaskRegistrar 关联;
AsyncConfigurer:用于异步处理
4. 启动
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
本文转自 :
(3条消息) SpringBoot使用@Scheduled创建定时任务_
https://www.cnblogs.com/cityspace/p/6638578.html
https://blog.csdn.net/xzyxcy/article/details/79746689
https://blog.csdn.net/qiaorui_/article/details/82999655