1.编写定时任务配置类,使用@EnableAsync注解开启异步线程执行任务
package com.yuhan.demo.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
/**
* 定时任务配置类
*
* @author yuhan
* @since 2020-03-23
*/
@EnableAsync
@Configuration
public class TaskPoolConfiguration {
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix("task-");
threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);
threadPoolTaskScheduler.setAwaitTerminationSeconds(60);
return threadPoolTaskScheduler;
}
}
2.编写全局TaskRunnable接口,后续的所有定时任务都需要实现该接口
package com.yuhan.demo.task;
/**
* @author yuhan
* @since 2020-03-23
*/
public interface TaskRunnable extends Runnable {
/**
* 获取任务名称
*
* @return
*/
String getTaskName();
}
3.编写第一个定时任务,实现TaskRunnable接口,run方法里即为需要执行的任务逻辑
package com.yuhan.demo.task;
import org.springframework.stereotype.Component;
/**
* @author yuhan
* @since 2020-03-23
*/