栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中实现定时任务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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;



@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;



@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代表星期六

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号