对于Quartz来说每个任务都要实现它的接口Job,重写里面的execute方法。
以下的demo,简单介绍了Quartz的任务创建、装载、执行。更详细的信息可参考Quartz的API
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleJob implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException {
//通过JobExecutionContext 获取JobDetail中的JobDataMap
JobDataMap map = context.getJobDetail().getJobDataMap();
System.out.println("map value: " + map.get("character"));
System.out.println("time: " + context.getJobDetail().getName() + " currentTime: " + System.currentTimeMillis());
try {
JobDetail j = new StdSchedulerFactory().getScheduler().getJobDetail("job", "group123");
System.out.println(j.getName() + "------" + j.getGroup() + "----" + j.getJobClass());
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
//构建任务日程表工程,使用StdSchedulerFactory,该类已经实现接口SchedulerFactory
SchedulerFactory factory = new StdSchedulerFactory();
try {
//获取任务日程队列
Scheduler scheduler = factory.getScheduler();
//启动
scheduler.start();
System.out.println("start time: " + System.currentTimeMillis());
//使用TriggerUtils生成触发时间
long ts = TriggerUtils.getNextGivenSecondDate(null, 10).getTime();
//构建属于SimpleJob的JobDetail,对于Scheduler来说执行的任务是每个JobDetail,
//而JobDetail是针对这个SimpleJob来构建的,所以任务执行的时候是执行SimpleJob
JobDetail jobDetail = new JobDetail("job", "group123", SimpleJob.class);
//构建触发器,把触发时间等信息封装好
SimpleTrigger trigger = new SimpleTrigger("trigger", "group123", "job", "group123", new Date(ts), null, 4, 10000);
JobDataMap map = new JobDataMap();
Person p = new Person();
p.setId(12);
p.setName("十二少");
map.put("person", p);
map.put("character", "brave");
//把JobDataMap 对象注入到jobDetail中,到任务执行的时候可以获取JobDetail
//也可以通过JobDetail获取JobDataMap
jobDetail.setJobDataMap(map);
//装载任务到任务日程表中,由于任务已经启动了,所以到了触发时间,任务将会执行
scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
.net 4.5项目基于quartz.net 和 Topshelf 可以安装到系统里的定时任务demo 一、项目 JobService 是针对安装到系统项目的,一般不用编写代码,只编辑其中的 App.config(数据链接、日志目录) 、quartz_jobs.xml(需要...
java中spring quartz定时任务demo,里面包含项目所需的quartz.jar, spring.jar包,配置文件等,可直接运行使用
java + quartz 实现定时任务的简单任务,下载即可运行
spring整合quartz动态定时任务demo-spring-quartz-demo
基于SSM+quartz的定时任务管理demo
Quartz.net-几十分钟后执行代码
java项目使用quartz,简单易用,直接可以运行
包含增删改功能。 快速入门,任务调度三大核心类:JobDetail Trigger Scheduler
Java Quartz定时任务简单列子
quartz的一个demo,完整的包,可运行的eclipse程序
基于Quartz的定时任务Demo,可监控任务执行,临时添加任务等,包含建表数据库脚本。
quartz-mongo-demo该实例中,将定时任务 quartz持久化到Mongodb中。 下载本实例后,请做如下配置: 1、修改properties/quartz_test.properties 中Mongodb为你自己的Mongodb地址、端口号及数据库 2、修改spring/...
spring+quartz demo,下载后即可运行,很强大哦....
C# Quartz.Net定时任务操作明细、完整过程 每种场景均有涉及,代码Copy稍作修改就可使用
官网资源,轻松获取,可以直接import到ide中运行,学习初步的quartz
java-quartz-demo java-quartz-demo 可以实现添加任务 删除任务 定义任务执行时间,项目中的jar包已经存在于zip中,下载下来直接运行
自己写的quartzdemo,quartz版本2.0.2
Quartz.net 搭配 Topshelf 安装服务,可自定义任务安装数量,限制线程数,限制任务数
quartz框架demo demo中包含了触发器Trigger,调度器Scheduler和Job的基本使用。直接运行main函数即可