前言:
而今同学们对“定时器代码怎么用的”大致比较注意,大家都想要知道一些“定时器代码怎么用的”的相关知识。那么小编也在网络上搜集了一些关于“定时器代码怎么用的””的相关资讯,希望你们能喜欢,朋友们一起来了解一下吧!SpringBoot中定时器的使用
简介
SpringBoot内置使用Spring task作为定时器,无需额外的操作,直接使用即可。
定时器主要分为两种:
每隔指定时间执行一次任务;例如:应用每隔10分钟去获取最新的天气情况;或者每隔10秒钟,同步一次航班信息;在指定的时间执行一次任务;例如:应用每天晚上1点钟,生成前一天的销售报表;每天早上9点,发送一次催款短信等;
快速使用
1,在Springboot中启用定时器,需要在启动类上添加@EnableScheduling标签:
2,任务开发,在需要作为定时任务的方法上,添加@Scheduled标签:
@Scheduled标签使用
@Scheduled标签提供了非常多属性的配置项,查看@Scheduled标签代码(仅列出重要属性):
其中:
cron:使用cron表达式,完成指定时间执行任务;fixedDelay:上一次任务结束时间点之后X毫秒执行一次任务(一般使用这个);fixedDelayString:允许配置占位符的方式来配置fixedDelay;fixedRate:上一次任务开始时间点之后X毫秒执行一次任务;fixedRateString:允许配置占位符的方式来配置fixedRate;initialDelay:第一次初始化之后延迟X毫秒执行第一次任务;initialDelayString:允许配置占位符的方式来配置initialDelay;
fixedDelay+initialDelay
下面代码演示fixedDelay混合initialDelay的使用方式:
系统打印:
cron表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:
秒(0~59)分钟(0~59)3 小时(0~23)4 天(0~31)5 月(0~11)6 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)年份(1970-2099)
其中,每个元素可以是一个固定的值或者由特殊符号或者通配符构成;
cron表达式支持一些特殊符号和通配符:
“*”字符代表所有可能的值 “/”字符用来指定数值的增量“-”字符用来表示连续的区间"L"字符用在日/星期,代表Last(最后);
一些例子:
*/5 ** * * ?:每隔5秒执行一次0 */1 ** * ?:每隔1分钟执行一次0 0 10,14,16 * * ? :每天上午10点,下午2点,4点0 0 12 * * ?:每天中午12点触发0 15 10 ? * *:每天上午10:15触发0 * 14 * * ?:每天下午2点到下午2:59期间的每1分钟触发0 0/5 14 * * ?:每天下午2点到下午2:55期间的每5分钟触发0 15 10 L * ?:每月最后一日的上午10:15触发
一个使用cron表达式的代码示例
运行结果:
串行执行和并行执行
默认情况下,多任务是单线程串行执行的,适合简单快速的任务。
比如,同时运行上面两个任务(CronTask和SimpleTask),运行结果为:
可以看到,两个任务同时运行在pool-2-thread-1这个线程上;
在Springboot中,要开启并行执行的任务,很简单,只需要配置一个线程池供任务调度器使用即可:
在该代码中,我们创建了一个3个子线程的线程池供任务调度器使用;
再次运行两个任务,执行结果:
可以很明显的看到,分别使用了pool-2-thread-1,pool-2-thread-2,pool-2-thread-3三个线程执行。
原创整理作者:叩丁狼教育
标签: #定时器代码怎么用的