Quartz定时任务

一、组成部分

(1)任务:JobDetail

(2)触发器:Trigger,包括SimpleTrigger和CronTrigger

(3)调度器:Scheduler (作用:连接任务和触发器)

二、Quartz Maven项目搭建
1、导入依赖
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.3.0</version>
</dependency>

2、新建一个Job任务类
public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("现在时间是:"+new SimpleDateFormat().format(new Date()));
    }
}
3、创建Scheduler,执行任务
(1)间隔一段时间执行任务

​ SimpleTrigger可以实现在一个指定时间段内执行一次作业任务或一个时间段内多次执行作业任务。

public class SimpleTrigger {

    public static void simpleTriggerPrint() throws Exception {
        // 1、创建任务
        JobDetail job=new JobDetailImpl("myjob","group1",MyJob.class);

        // 2、创建一个触发器
        Trigger simpleTrigger=new SimpleTriggerImpl("simpleTrigger","group1",10,1000);

        // 3、创建调度者工厂
        SchedulerFactory sfc=new StdSchedulerFactory();

        // 4、创建一个调度者
        Scheduler scheduler = sfc.getScheduler();

        // 5、注册并进行调度
        scheduler.scheduleJob(job,simpleTrigger);

        // 6、启动调度
        scheduler.start();
        //休眠
        Thread.sleep(20000);

        // 7、关闭调度
        scheduler.shutdown();

    }
}

(2)定时执行任务

​ CronTrigger允许用户更精准地控制任务的运行日期和时间,而不仅仅是定义工作的频度。

​ CronTrigger通过Cron表达式定义准确的运行时间点。

public class CronTrigger {

    public static void cronTriggerPrint() throws Exception {
        // 1、创建一个任务
        JobDetail job = new JobDetailImpl("myJob", "group1", MyJob.class);

        // 2、创建Cron触发器
        Trigger  cronTrig = new CronTriggerImpl("cronTrig", "group1","0 15 13 20 12 ? *");

        // 3、创建调度者工厂
        SchedulerFactory sfc = new StdSchedulerFactory();

        // 4、创建一个调度者
        Scheduler scheduler = sfc.getScheduler();

        // 5、注册并进行调度
        scheduler.scheduleJob(job, cronTrig);

        // 6、启动调度
        scheduler.start();
        // 休眠10s
        Thread.sleep(10000);

        // 7、关闭调度
        scheduler.shutdown();
    }
}

​ 相关知识:

​ Cron表达式的格式:

[秒] [分] [小时] [日] [月] [周] [年]

​ 例子:

​ (1)0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
​ (2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
​ (3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
​ (4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
​ (5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
​ (6)0 0 12 ? * WED 表示每个星期三中午12点

在这里插入图片描述
在这里插入图片描述
​ 在线生成Cron表达式的工具:http://cron.qqe2.com/

4、测试
public class MyTest {
    public static void main(String[] args) throws Exception {
        //SimpleTrigger.simpleTriggerPrint();
        CronTrigger.cronTriggerPrint();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值