quartz学习

这几天公司正好有空就系统的学习了下quartz,quartz对任务调度的领域问题进行了高度抽象,提出了调度器,任务和触发器这三个核心的概念。

其中最简单的周期时间间隔调度:

先建立一个job类

import java.util.Date;

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

public class SimpleJob implements Job{

	@Override
	public void execute(JobExecutionContext jj) throws JobExecutionException {
		System.out.println(jj.getTrigger().getName()+" triggerd.time is: "+(new Date()));
		
	}

}

再创建一个触发器类


import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

import com.anchora.test.job.SimpleJob;

public class SimpleTriggerRunner {
	public static void main(String[] args) {
		try{
			JobDetail jobDetail=new JobDetail("job1", "jgroup1", SimpleJob.class); //创建一个jobdetail实例
			
			SimpleTrigger simpleTrigger=new SimpleTrigger("trigger1", "tgroup1");  //触发器规则
			simpleTrigger.setStartTime(new Date());
			simpleTrigger.setRepeatInterval(2000);
			simpleTrigger.setRepeatCount(100);
			
			SchedulerFactory schedulerFactory=new StdSchedulerFactory();
			Scheduler scheduler=schedulerFactory.getScheduler();
			
			
			scheduler.scheduleJob(jobDetail, simpleTrigger); //注册并进行调度
			scheduler.start();
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

稍微复杂一点的调度:crontrigger比simpletrigger更有具体实际意义的调度方案,调度规则基于cron表达式,支持日历相关的重复时间间隔


import java.util.Date;

import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

import com.anchora.test.job.SimpleJob;

public class CronTriggerRunner {
	public static void main(String[] args) {
		try{
			JobDetail jobDetail=new JobDetail("job2", "jgroup2", SimpleJob.class);
			
			CronTrigger cronTrigger=new CronTrigger("trigger2", "tgroup2");
			CronExpression cexp=new CronExpression("0/5 * * * * ?");
			cronTrigger.setCronExpression(cexp);
			
			SchedulerFactory schedulerFactory=new StdSchedulerFactory();
			Scheduler scheduler=schedulerFactory.getScheduler();
			
			
			scheduler.scheduleJob(jobDetail, cronTrigger);
			scheduler.start();
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}

如果想要跟spring结合起来,参考spring文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值