quartz-01 helloworld

quartz 是一个Java调度框架,支持cron表达式,支持集群。

官方地址 http://www.quartz-scheduler.org/

第一讲,先看一个demo。

1 :从 http://www.quartz-scheduler.org/downloads/ 下载文件 http://d2zwv9pap9ylyd.cloudfront.net/quartz-2.2.3-distribution.tar.gz 下载到的是 quartz-2.2.3-distribution.tar.gz 解压后有这些文件夹

  • docs:quartz文档
  • examples:例子 :这里有许多demo可以阅读。
  • javadoc:quartz的api
  • lib :quartz框架所需的jar包
  • licenses
  • src:quartz源码

2 创建工程

新建普通的java项目,然后导入lib下的所有jar包。然后写代码:

package com.wang;

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.out.println(" hello world ");
    }
}



package com.wang;

import java.util.Date;

import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.CronTriggerImpl;

public class DemoTest {
    public static void main(String[] args) throws Exception {
        JobDetailImpl jobDetail = new JobDetailImpl();
        jobDetail.setGroup("test-group");
        jobDetail.setName("test-name");
        jobDetail.setJobClass(MyJob.class);

        CronTriggerImpl trigger = new CronTriggerImpl();
        // cron表达式,表示每2秒执行一次。
        trigger.setCronExpression("*/2 * * * * ?");
        trigger.setStartTime(new Date());
        trigger.setName("test-trigger-name");
        trigger.setGroup("test-trigger-group");

        SchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler = schedulerFactory.getScheduler();
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();

    }
}

还有一个使用maven创建的demo如下

一:

maven 依赖:

<dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
</dependency>
在CLASSPATH下创建 quartz.properties 文件
#指定了调度器名字
org.quartz.scheduler.instanceName = MyScheduler
#线程池最大线程数量
org.quartz.threadPool.threadCount = 3
#指定调度器存储任务的方式,这个是存储在内存中。
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
package com.wang.hbt;

import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println(new Date());
    }
}
package com.wang.hbt;

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


public class Main {
    public static void main(String[] args) throws SchedulerException {
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();
        JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
        scheduler.scheduleJob(job, trigger);

    }
}

猜你喜欢

转载自blog.csdn.net/faicm/article/details/79469674
今日推荐