Java中实现定时任务

定时任务就是“闹钟”的意思,每天在固定的时间执行一些操作。比如说,每天的0点,我要把缓存清理一下,把日志更新一下等,这时候就需要用到定时任务。

那么首先我们创建一个定时任务类Task

任务类上需要加@EnableScheduling注解来代表支持定时任务

或者在启动类上加@EnableScheduling注解

package com.ywt.mybatisplus.demo;

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author pc
 */

@EnableScheduling //定时任务支持
@Component
public class Task {

}

方法上需要加@Scheduled来开启定时任务

package com.ywt.mybatisplus.demo;

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

/**
 * @author pc
 */

@EnableScheduling //开启定时任务
@Component
public class Task {

    @Scheduled(fixedRate = 3000)
    public void fixedRateTask(){
        System.out.println("每隔3秒执行一次:" + LocalDateTime.now());
    }

    @Scheduled(fixedDelay = 5000)
    public void fixedDelayTask(){
        System.out.println("每隔5秒执行一次:" + LocalDateTime.now());
    }

    @Scheduled(cron = "0 0 0 * * ?")
    public void cronTask(){
        System.out.println("每天的0点执行一次");
    }
}

然后里面的注解有两个属性,我们分别来讲一下它们的区别:

       fixedRate 和 fixedDelay的值是毫秒,3000 = 3s(秒),意思是每3秒执行一次该方法,那么他们都可以执行,他们的区别在哪?

fixedRate为固定执行,意思就是不管有没有其他任务在调度,我到了我这个时间点,那我就执行。

fixedDelay为延迟执行,它执行的方式是,我到了我该执行的时间,但是有别的定时任务正在调度,我需要等它执行完以后我在执行

实际用到最多的还是cron表达式,比如我每天的几点几分要执行什么任务,用到的就是cron表达式,我们来说一下cron里面的几个参数是什么意思

# cron一共有7位,但是最后一位是年,可以留空,所以我们可以写6位

# 第一位:代表秒 取值 0-59
# 第二位:表示分,取值0-59
# 第三位:表示小时,取值0-23
# 第四位:日期天/日,取值1-31
# 第五位:日期月份,取值1-12
# 第六位:星期,取值1-7,星期一,星期二...,
         注:不是第1周,第二周的意思另外:1表示星期天,2表示星期一。

这种表达式基本上不用自己写,需要的时候在网上搜一下就可以找到。

接下来为大家提供一些常用的定时任务表达式

表达式描述
cron = "0 8 0 * * ? "每天的8点执行
cron = "0 30 8 * * ? "每天的8点30分执行
cron = "0 5/10 8 * * ?"每天8点的 5分,15分,25分,35分,45分,55分这几个时间点执行
cron = "0 10 8 ? * 2"每周星期天,8点10分执行,注:1表示星期天 7代表星期六

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值