Java实现定时任务调度之Quartz篇

一、了解Quartz
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制,可以与 J2EE与 J2SE应用程序相结合使用也可以单独使用。其允许程序开发人员根据时间的间隔来调度作业。
Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

Quartz 的几个核心概念:
1.Job 表示一个工作,要执行的具体内容。此接口中只有一个方法void execute(JobExecutionContext context)
2.JobDetail 表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。
3.Trigger 代表一个调度参数的配置,什么时候去调。
4.Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。

二、Quartz的第一种使用方式
上面说到了Quartz既可以与 J2EE以及 J2SE应用程序相结合使用也可以单独使用,这里就先介绍一下单独使用的方法。
既然是单独使用,也就是说我们只需要一个main函数就可以开始一个调度任务。在进行Quartz调度时,最重要的三部分就是Job、Trigger、Scheduler,分别为任务、触发器和调度器。

把三者的关系打个比方,Scheduler就像是Boss主公,他是整个团队的核心领袖,负责整个调度运行的环境。而Trigger就像是谋士军师,他有整个工作要如何运行的标准。最后的Job就像是小兵,来执行老板下发的命令,以及Trigger告诉他要如何执行怎么执行,这样Job就去做准确的调度任务(可能不是特别准确,大家自己理解一下)。

第一步,需要添加Quartz依赖

		<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>

首先,创建我们的调度任务类,该类实现 Job接口,只有一个execute方法需要重写,我们把需要的相关业务代码写在此方法中,最后会将该方法加入调度器中执行。

/**
 * @author Edwin
 * @description 调度任务类
 **/
public class QuartzTaskJob implements Job {
   

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
   
        System.out.println("执行目标操作中...");
    }
}

第二部分代码便是上面提到的,需要创建调度器 Scheduler、触发器 Trigger、及任务实例Job,这样我们就可以对该任务进行以我们赋予的标准或规则进行调度,下面是main函数中的代码

/**
 * @author Edwin
 * @description 调度控制类
 **/
public class MyScheduler {
   

    public static void main(String[] args) throws SchedulerException, InterruptedException {
   

        //创建调度器Scheduler
        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        //创建JobDetail
        JobDetail jobDetail = JobBuilder.newJob(QuartzTaskJob.class)
                .withIdentity("jobDetail", "group1").build();
        //创建触发器Trigger
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "groupOfTrigger1")
                .startNow()
                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值