Quartz+servlet

Quartz 版本:quartz-2.2.1

jdk1.6


1.因为JobBuilder.newJob()只能接收class,所以我建QuartzObj.class,让QuartzTxJob1.class和QuartzTxJob2.class来extends QuartzObj.class

2.JobBuilder.newJob(obj.getClass()).withIdentity("job"+code, "group"+code).build(); 中的job,group不能重复

3.TriggerBuilder.newTrigger().withIdentity(new TriggerKey("trigger"+code, "group"+code)).startNow()  .withSchedule(CronScheduleBuilder.cronSchedule(cron))  .build();中的trigger不能重复group跟newJob中的group必须相同。

4.如果cron表达式以秒为单位,执行的时候可能与设置的时间有几秒的延迟,间隔设置成分钟就没有了

5. CronTrigger trigger = TriggerBuilder.newTrigger()可以使用其他子类来引用(SimpleTrigger )

6.一个JobDetail 支持多个job,但一个 Trigger 只能被指派给一个 Job。

7.quartz2.x进行了大幅度修改,因此兼容性更好,所以建议使用最新版本

2.x 以上JobDetail jobDetail = JobBuilder.newJob(PreOperationJob.class) 

2.x 以下JobDetail jobDetail = new JobDetail("job1_1","jGroup1", PreOperationJob.class); 

8.使用spring3.几的时候一定要小心,Spring只能支持Quartz1.x系列!如果要使用就要升级spring或者降低Quartz版本


QuartzManager.class

package com.cc.quartztx;


import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;


/**
 * quartz 管理类
 * 
 * @author ee
 * 
 */
public class QuartzManager {
/**
 * @param obj
 * @param code 区分 job group trigger 
 * @param cron cron表达式
 */
    public static void run(QuartzObj obj,String code,String cron) {  
        try {  
            SchedulerFactory sf = new StdSchedulerFactory();  
            Scheduler scheduler = sf.getScheduler();
            JobDetail job = JobBuilder.newJob(obj.getClass()).withIdentity("job"+code, "group"+code).build();  
            CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(new TriggerKey("trigger"+code, "group"+code)).startNow()  
                            .withSchedule(CronScheduleBuilder.cronSchedule(cron))  
                            .build();
            scheduler.scheduleJob(job, trigger);  
            scheduler.start();  
        } catch (SchedulerException e) {  
        <span style="white-space:pre">	</span>e.printStackTrace();
        }  
    }
}

 

QuartzObj.class

package com.cc.quartztx;


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


public class QuartzObj implements Job {


@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
}


}


QuartzTxJob1.class
package com.cc.quartztx;




import java.util.Date;


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


public class QuartzTxJob1 extends QuartzObj implements  Job{


@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
Date date=new Date();
System.out.println("Job1:"+this.getClass().getName()+"--当前时间"+date.getMinutes()+"分"+date.getSeconds()+"秒");  
}


}


QuartzTxJob2.class

package com.cc.quartztx;




import java.util.Date;


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


public class QuartzTxJob2 extends QuartzObj implements Job{


@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
Date date=new Date();
System.out.println("Job2:"+this.getClass().getName()+"--当前时间"+date.getMinutes()+"分"+date.getSeconds()+"秒");  
}


}

QuartzTx.class

package com.cc.quartztx;


public class QuartzTx {

public static void main(String[] args) {
QuartzTxJob1 QuartzTxJob1=new QuartzTxJob1();
QuartzTxJob2 QuartzTxJob2=new QuartzTxJob2();
QuartzManager.run(QuartzTxJob1,"1","10 0/1 * * * ?");// 每一分钟的10秒执行
QuartzManager.run(QuartzTxJob2,"2","15 0/1 * * * ?");//每一分钟的15秒执行<pre code_snippet_id="416146" snippet_file_name="blog_20140704_6_9332100" name="code" class="java">

}
}
 


运行效果:

Job2:com.cc.quartztx.QuartzTxJob2--当前时间24分15秒
Job1:com.cc.quartztx.QuartzTxJob1--当前时间25分10秒
Job2:com.cc.quartztx.QuartzTxJob2--当前时间25分15秒
Job1:com.cc.quartztx.QuartzTxJob1--当前时间26分10秒
Job2:com.cc.quartztx.QuartzTxJob2--当前时间26分15秒
Job1:com.cc.quartztx.QuartzTxJob1--当前时间27分10秒
Job2:com.cc.quartztx.QuartzTxJob2--当前时间27分15秒
Job1:com.cc.quartztx.QuartzTxJob1--当前时间28分10秒
Job2:com.cc.quartztx.QuartzTxJob2--当前时间28分15秒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值