`
jiejiecool1992
  • 浏览: 2512 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Quartz入门

    博客分类:
  • java
阅读更多
  1. ​首先需要先建立一个实际的事物,即你想要干什么,比如说输出aaa三个字母。它怎么样被调度以后再说,但是先把输出三个字母的类建立。

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package scheduler;
     
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
     
     
    public class myJob implements Job{
     
        @Override
        public void execute(JobExecutionContext arg0) throws JobExecutionException {
            System.out.println("aaa");
        }
    }

2.这是任务调度的代码,下面会有仔细的讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package scheduler;
 
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.CronScheduleBuilder.cronSchedule;
 
 
public class simpleTriggerRunner {
    private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME";
    private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME";
    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            //得到默认调度器
            Scheduler sc=StdSchedulerFactory.getDefaultScheduler();
            //启动调度器
            sc.start();
            //新建一个jobdetail, 参数分别是id和name,这个在实际项目的时候很有用,注意此处的语法
            JobDetail jd=newJob(myJob.class).withIdentity("zhoujie",JOB_GROUP_NAME).build();
            //新建一个trigger,参数分别是id和name,注意此处语法
            Trigger trigger1=(SimpleTrigger)newTrigger().withIdentity("zhoujie",TRIGGER_GROUP_NAME).build();
            //cron表达式,每隔5s执行一次
            String cron = "0/5 * * * * ?";
            //注意此处语法
            Trigger trigger2=newTrigger().withIdentity("zhoujie",TRIGGER_GROUP_NAME).withSchedule(cronSchedule(cron)).build();
            //scheduler开始调度
            sc.scheduleJob(jd, trigger2);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
 
    }
 
}

3.讲解:

开始执行,会出现这样的错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

出现这个问题说明少了jar包,导入slf4j-api-1.7.5.jar和slf4j-log4j12-1.7.5.jar依然报错,错误为:

Failed to instantiate SLF4J LoggerFactory

Reported exception:

java.lang.NoClassDefFoundError: org/apache/log4j/Level

查阅资料,发现缺少log4j.jar

运行就不会出现错误。

4.      line:25  如果不启动的话将不会进行任务调度

    ​    ​ line:27  此处newJob(class)需要静态导入import static org.quartz.JobBuilder.newJob;

    ​    ​ line:29  此处newTrigger()需要静态导入import static org.quartz.TriggerBuilder.newTrigger;

    ​    ​ line:33  由于此处使用了cron表达式多了一个.withSchedule(cronSchedule(cron)),需要静态导入import static     ​    ​    ​    ​    ​ org.quartz.CronScheduleBuilder.cronSchedule;

5.最后开始调度    ​    ​    ​    ​sc.scheduleJob(jd, trigger2); 将 jobDetail和trigger当做参数传入变可以每5s进行一次调度

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics