Quartz 单例定时任务

文章介绍了如何在Java中使用Quartz库创建定时任务。首先引入quartz依赖,然后创建Job类实现业务逻辑,接着编写定时任务执行器,包括创建任务调度器、任务和触发器。通过CronTrigger设置cron表达式来控制任务执行频率,例如每两分钟执行一次。最后启动调度器执行任务。

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

1、引入jar包,继承 Job 接口,编写需要执行的业务逻辑

<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.2</version>
        </dependency>
public class DemoJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("我是一个定时任务执行逻辑");
    }
}

2、编写定时任务执行器

public class QuartzExecutor {
    //1、创建一个任务调度器(好比公交调度站)
    public static Scheduler createScheduler() throws SchedulerException {
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        return scheduler;
    }
    //2、创建一个任务(好比某一个公交车出行)
    public static JobDetail createJob(){
        JobBuilder jobBuilder = JobBuilder.newJob(DemoJob.class);
        jobBuilder.withIdentity("jobName","myjob");

        JobDetail jobDetail = jobBuilder.build();
        return jobDetail;
    }
    //3、创建作业任务时间出发器
    public static Trigger createTrigger(){
        CronTrigger cronTrigger = TriggerBuilder.newTrigger().
                withIdentity("triggerName", "myTrigger").
                startNow().
                withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?")).build();
        return cronTrigger;
    }

    public static void main(String[] args) throws SchedulerException {
        //1、创建一个任务调度器(好比公交调度站)
        Scheduler scheduler = QuartzExecutor.createScheduler();
        //2、创建一个任务(好比某一个公交车出行)
        JobDetail job = QuartzExecutor.createJob();
        //3、创建作业任务时间出发器
        Trigger trigger = QuartzExecutor.createTrigger();
        //4、根据任务调度器根据时间触发器执行我们的任务
        scheduler.scheduleJob(job,trigger);
        scheduler.start();
    }
}

备注:

cron表达式有七个位置组成:

1、Second(秒)  0~59

2、Minutes(分)  0~59

3、Hours (小时) 0~23

4、Day of Month (天) 1~31 ,有的月份不足31天

5、Month(月) 0~11 ,或者 JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC

6、Day of Week(周) 1~7,1=SUN或者 SUN,MON,TUE,WEB,THU,FRI,SAT

7、Year(年)1970~2099 可选项

示例:

0 0 11 * * ? 每天的11点触发执行一次

0 30 10 1 * ? 每月1号上午10点半触发执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值