SpringBoot定时任务
2018-01-25 22:11
507 查看
springboot已经支持了定时任务Schedule模块,一般情况已经完全能够满足我们的实际需求。
1.想要使用定时,我们首先要开启支持,其实就是在启动类上面加个注解就 @EnableScheduling。
MyTask.java
运行结果:
注意:
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义
解释
第一位,表示秒,取值0-59
第二位,表示分,取值0-59
第三位,表示小时,取值0-23
第四位,日期天/日,取值1-31
第五位,日期月份,取值1-12
第六位,星期,取值1-7,星期一,星期二…,注:不是第1周,第二周的意思
另外:1表示星期天,2表示星期一。
第7为,年份,可以留空,取值1970-2099
(*)星号:可以理解为每的意思,每秒,每分,每天,每月,每年…
(?)问号:问号只能出现在日期和星期这两个位置,表示这个位置的值不确定,每天3点执行,所以第六位星期的位置,我们是不需要关注的,就是不确定的值。同时:日期和星期是两个相互排斥的元素,通过问号来表明不指定值。比如,1月10日,比如是星期1,如果在星期的位置是另指定星期二,就前后冲突矛盾了。
(-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12
(,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四
(/)斜杠:如:x/y,x是开始值,y是步长,比如在第一位(秒) 0/15就是,从0秒开始,每15秒,最后就是0,15,30,45,60 另:*/y,等同于0/y
1.想要使用定时,我们首先要开启支持,其实就是在启动类上面加个注解就 @EnableScheduling。
@SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * * @Title: taskScheduler * @Description: 定义一个线程池,支持多线程调度 * @param: @return * @return: TaskScheduler * @throws */ @Bean public TaskScheduler taskScheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setPoolSize(5); return taskScheduler; } }
MyTask.java
@Component public class MyTask { private final Logger logger = LoggerFactory.getLogger(MyTask.class); /** * * @Title: executeFileDownLoadTask * @Description: 每隔5s运行 * @param: * @return: void * @throws */ @Scheduled(fixedDelay = 5000) public void executeFileDownLoadTask() { // 间隔3s,执行工单上传任务 Thread current = Thread.currentThread(); System.out.println("定时任务1:" + current.getId()); logger.info("ScheduledTest.executeFileDownLoadTask 定时任务1:" + current.getId() + ",name:" + current.getName()); } /** * * @Title: executeFileDownLoadTask2 * @Description: 每隔2s运行 * @param: * @return: void * @throws */ @Scheduled(fixedDelay = 2000) public void executeFileDownLoadTask2() { // 间隔3s,执行工单上传任务 Thread current = Thread.currentThread(); System.out.println("定时任务2:" + current.getId()); logger.info("ScheduledTest.executeFileDownLoadTask 定时任务2:" + current.getId() + ",name:" + current.getName()); } /** * * @Title: executeFileDownLoadTask3 * @Description: 每隔2s运行 * @param: * @return: void * @throws */ @Scheduled(cron = "0/2 * * * * ?") public void executeFileDownLoadTask3() { // 间隔3s,执行工单上传任务 Thread current = Thread.currentThread(); System.out.println("定时任务3:" + current.getId()); logger.info("ScheduledTest.executeFileDownLoadTask 定时任务3:" + current.getId() + ",name:" + current.getName()); } }
运行结果:
定时任务3:21 2018-01-25 22:08:22.002 INFO 8656 --- [taskScheduler-2] com.dx.task.MyTask : ScheduledTest.executeFileDownLoadTask 定时任务3:21,name:taskScheduler-2 定时任务2:20 2018-01-25 22:08:22.538 INFO 8656 --- [taskScheduler-1] com.dx.task.MyTask : ScheduledTest.executeFileDownLoadTask 定时任务2:20,name:taskScheduler-1 定时任务3:24 2018-01-25 22:08:24.001 INFO 8656 --- [taskScheduler-4] com.dx.task.MyTask : ScheduledTest.executeFileDownLoadTask 定时任务3:24,name:taskScheduler-4 定时任务2:22 2018-01-25 22:08:24.539 INFO 8656 --- [taskScheduler-3] com.dx.task.MyTask : ScheduledTest.executeFileDownLoadTask 定时任务2:22,name:taskScheduler-3
注意:
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义
解释
第一位,表示秒,取值0-59
第二位,表示分,取值0-59
第三位,表示小时,取值0-23
第四位,日期天/日,取值1-31
第五位,日期月份,取值1-12
第六位,星期,取值1-7,星期一,星期二…,注:不是第1周,第二周的意思
另外:1表示星期天,2表示星期一。
第7为,年份,可以留空,取值1970-2099
(*)星号:可以理解为每的意思,每秒,每分,每天,每月,每年…
(?)问号:问号只能出现在日期和星期这两个位置,表示这个位置的值不确定,每天3点执行,所以第六位星期的位置,我们是不需要关注的,就是不确定的值。同时:日期和星期是两个相互排斥的元素,通过问号来表明不指定值。比如,1月10日,比如是星期1,如果在星期的位置是另指定星期二,就前后冲突矛盾了。
(-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12
(,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四
(/)斜杠:如:x/y,x是开始值,y是步长,比如在第一位(秒) 0/15就是,从0秒开始,每15秒,最后就是0,15,30,45,60 另:*/y,等同于0/y
相关文章推荐
- springboot 定时任务 implements Job 开发。
- SpringBoot 定时任务升级篇(动态修改cron参数)
- springboot整合Quartz实现动态配置定时任务的方法
- Spring Boot系列三 Spring @EnableScheduling 定时任务用法总结
- spring-boot(五) RabbitMQ详解 定时任务
- SpringBoot整合Quartz定时任务
- Spring Boot 定时任务的使用
- springboot(九):定时任务
- springboot之后,使用@schedule注解,开启定时任务
- SpringBoot | 第二十二章:定时任务的使用
- SpringBoot开发详解(十二) -- SpringBoot中执行定时任务
- springboot 中定时任务cron表达式
- Spring Boot使用方法小札(2):执行定时任务
- Springboot使用定时任务,Spring Schedule
- Springboot整合mybatis及分页查询、定时任务)
- springboot(九):定时任务
- Springboot整合Quartz实现动态配置定时任务
- spring boot 整合 quartz 集群环境 实现 动态定时任务配置【原】
- spring boot中定时任务的使用
- Spring Boot集成持久化Quartz定时任务管理和界面展示