定时任务:Timer,@Scheduled,Quartz,xxl-job

本文介绍了Java中常见的四种定时任务实现方式:Timer、Spring的@Scheduled注解、Quartz以及xxl-job。详细讲解了每个方法的使用场景、优缺点以及配置步骤,提供了丰富的示例代码,帮助开发者更好地理解和运用Java定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录几种Java定时任务玩法

一.Timer

1.需要关注两个类,Timer和TimerTask
    TimerTask:任务内容
    Timer:里面有调度TimerTask执行的方法
2.适用于比较简单的计时任务(简单任务下或许比Quartz用起来更方便,不用引入额外的包,逻辑也没有那么复杂)
3.两个类均位于java.util包下
4.如果出现错误,程序会直接崩溃,而不会捕获异常进行异常处理
5.代码
package com.shixin.pawcode.resources.timer;
/**
* @Description
* @Author shixin
* @Date 2021/5/12 8:51
*/
public class MyTimer {
    private static int count = 0;
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //延迟2s开始执行,执行间隔1s
        System.out.println("当前时间 : "+sdf.format(new Date()));
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println(count++ + " : " +sdf.format(new Date()));
            }
        }, 2000L, 1000L);
    }
}

执行结果

 
 
除了上面的调度方法外,在Timer里面还重载了好多种方法,可以自行查阅相关文档或者反编译看源码注释学习
 
 
 

二.@Scheduled

这个注解是Spring自带的,直接按照步骤使用即可。

1.在启动类上添加注解@EnableScheduling

2.代码

package com.shixin.pawcode.resources.config;
@Slf4j
@Component
public class SpringAnnotationScheduler {
    @Scheduled(cron = "* * * * * ?")
    private void test(){
        log.info("定时任务测试");
    }
}

这样就行了......不懂参数cron的可以看看这篇文章 :cron详解,在文章下半部分的代码部分也有介绍cron,可以继续往下看。另外附上生成器网址:Cron表达式生成

三.Quartz  

英 [kwɔːts]   美 [kwɔːrts]

1.Quartz是什么

Quartz是一个完全由java编写的开源作业调度框架。不要让作业调度这个术语吓着你。尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了!
————根据我的使用经验,确实是相当的简单,而且逻辑思路也非常的清晰

2.Quartz能做什么

假设你有以下需求,或许可以使用它:
--想要每天凌晨1点统计昨天新增的用户
--想要每隔一小时备份自己数据库的数据
--想要在特定的节日提醒自己做某些事情
--想要代替人工,每半个小时自动处理邮件
--定期清理数据库不需要的数据
在需要做重复功的时候就可以考虑使用任务调度机制了

3.如何使用

(1)需要使用外部jar包,先引入相关包,我用的版本是2.3.2
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>${quartz.version}</version>
</dependency>

(2)定义一个类,实现Job接口。

需要重写Job接口的execute。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值