Quartz入门及简单实现

Quartz简介

  Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz可以用来创建执行数十,数百乃至数万个作业的简单或复杂的计划; 作业的任务被定义为标准的Java组件,它可以执行几乎任何你可能编程的任务。Quartz Scheduler包含许多企业级功能,例如支持JTA事务和集群。

  如果您的应用程序具有需要在特定时间内发生的任务,或者如果您的系统经常性维护作业,那么Quartz可能是您理想的解决方案。

Quartz定时任务实现

  导入jar包(maven依赖)

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

  示例代码

    自定义一个任务类实现Quartz的Job接口,并重写execute()函数

               

package com.qgx.quartz.job;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class MyJob implements Job{

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.err.println("Hello Quartz!");
        
    
    }

}

    然后定义一个测试类,需要将定义相应的任务(JobDetial)触发器(trigger),并将其加到一个执行日程(Scheduler)中,启动日程。

  

package com.qgx.quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.qgx.quartz.job.MyJob;


public class QuartzTest {
    
    public static void main(String[] args) throws Exception{
        
        JobDetail job = JobBuilder.newJob(MyJob.class)
                .withIdentity("job1", "group1")
                .build();

        // Trigger the job to run now, and then repeat every 5 seconds
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5)
                        .repeatForever())
                .build();

        // Grab the Scheduler instance from the Factory
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        // and start it off
        scheduler.start();
        // Tell quartz to schedule the job using our trigger
        scheduler.scheduleJob(job, trigger);
    }
}

  执行结果:每5秒执行一次

  

  

猜你喜欢

转载自www.cnblogs.com/goxcheer/p/9284211.html