定时任务的使用

  定时任务,简要说明就是在指定时间内触发执行某个动作。举个例子而言,譬如我们在朋友生日准时送上生日祝福,那么平时比较繁忙的我们,有时候往往甚至不知道今天是星期几,那么这时候可以让程序帮我们去定时的送上生日祝福。

1 为什么要用定时任务

  1. 无需手动触发,无需页面(人工)触发动作

  2. 执行时间准确,会在准确的时间内进行业务处理

  3. 低耦合,单独为一个动作体,可以自行开关,不影响其他业务功能

2 怎么使用定时任务

以springboot为例子

2.1 在启动类中加入@EnableScheduling注解

@EnableScheduling
@SpringBootApplication
public class OpenServiceApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(OpenServiceApplication.class, args);
    }
}

2.2 在方法上添加@Scheduled注解,以及定时cron表达式

@Scheduled(cron = "0 */5 * * * ?")
    public void demo() throws Exception {
        System.out.println("在这里提醒朋友们,多喝热水");
    }

3 cron表达式

在线生成cron表达式:(在线Cron表达式生成器

cron表达式简单的来说就是,你要告诉程序什么时候执行任务的语言

表达式组成(七位数字,其中spring只认前六位):

Seconds Minutes Hours DayofMonth Month DayofWeek Year 或 Seconds Minutes Hours DayofMonth Month DayofWeek

字段星期
范围1-591-590-231-311-121-7自选年份
符号, - * /, - * /, - * /, - * / ? L W C, - * /, - * / ? L C*

基本符号释义:

符号-*/
含义枚举值范围值任意值起始触发,后间隔触发
例子5,60 在秒域表示5秒跟60秒都匹配3-23 在时域表示3点到23点这个范围都匹配在分域中表示,每分钟都匹配5/20 在分域表示起始分钟为5触发,后每间隔20分再次触发

特殊符号释义

符号LWLW#C
范围DayofMonth DayofWeekDayofMonthDayofMonth连用DayofWeekDayofMonth DayofWeek
含义DayofMonth 与 DayofWeek 冲突时使用表示最后表示有效的工作日 ; 匹配前后距离最近的工作日表示某月最后一个工作日每个月第几个星期几需关联日历
例子譬如指定了每个月20日执行,那么便不能指定具体的星期了,需用?DayofWeek使用6L表示最后一个星期五20L ; 假如20日是星期六,那么匹配19日LW;最后一个工作日4#2; 某月第二个星期三不常见,此处暂不举例

专有符号除了?以外,Spring定时任务都不支持使用

4 异步多线程使用定时任务

4.1 在启动类上使用@EnableAsync注解

@EnableScheduling
@EnableAsync
@SpringBootApplication
public class OpenServiceApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(OpenServiceApplication.class, args);
    }
}

4.2 在方法上使用@Async注解

 @Scheduled(cron = "0 */5 * * * ?")
    @Async
    public void demo() throws Exception {
        log.info("线程名称为:"+Thread.currentThread().getName());
        System.out.println("在这里提醒朋友们,反复执行这是不同的线程");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子糖浆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值