Quartz是一个功能强大的java计划任务系统,它通过简单的配置和代码完成各种计划人数,定时单机应用到分布式的计算机间远程任务调度,都可以做到。
quartz是一个按照设定的时间规则来调度作业的调度器,比如可以设定每30s启动一个Job,但如果Job在30s内还未完成,那么quartz默认情况下还是按照设定的周期启动新的Job线程
今天刚看了一点资料,做一下笔记。
地址:
http://www.opensymphony.com/quartz/
例子:
import java.util.ArrayList;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
public class TimerTest {
public static void main(String... strings) {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched;
try {
// sched = schedFact.getScheduler();
sched = StdSchedulerFactory.getDefaultScheduler();
JobDetail jobDetail = new JobDetail("myJob", // job name
sched.DEFAULT_GROUP, // job group (you can also specify 'null' to
// use the default group)
TestJob.class); // the java class to execute
jobDetail.getJobDataMap().put("jobSays", "Hello World!");
jobDetail.getJobDataMap().put("myFloatValue", 3.141f);
jobDetail.getJobDataMap().put("myStateData", new ArrayList());
Trigger trigger = TriggerUtils.makeDailyTrigger(0, 1);
trigger.setStartTime(new Date());
trigger.setName("myTrigger");
//Add the given JobDetail to the Scheduler,
//and associate the given Trigger with it.
sched.scheduleJob(jobDetail, trigger); sched.start();
// sched.shutdown();
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.util.ArrayList;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class TestJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("........................................");
String instName = context.getJobDetail().getName();
String instGroup = context.getJobDetail().getGroup();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String jobSays = dataMap.getString("jobSays");
float myFloatValue = dataMap.getFloat("myFloatValue");
ArrayList state = (ArrayList) dataMap.get("myStateData");
state.add(new Date());
System.out.println("Instance " + instName + " of DumbJob says: " + jobSays);
}
}
运行结果如同
http://www.opensymphony.com/quartz/wikidocs/QuickStart.html所说的,显示了一堆红色的信息,说明程序读取了默认的Quartz配置,同时已经启动了。
问题1:TestJob 中定义的一些输出信息怎么什么都没有呢,定义了1分钟,但是没有输出?
仔细看了例子代码,发现居然范了一个低级错误,使用了makeDailyTrigger,该方法是定时,每天几点几分进行计划任务,修改为
Trigger trigger = TriggerUtils.makeSecondlyTrigger(3);
之后没三秒钟就打印:
........................................
Instance myJob of DumbJob says: Hello World!
TriggerUtils内还有很多其他有用的方法,看
quartz API
再增加一个JOB,只需要增加一个job类,jobDetail,Trigger两对象,调用scheduleJob方法就可以加入调度队列了。
这只是一个简单的例子,quartz还有很复杂的功能,继续学习。
引用
分享到:
相关推荐
Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)
java-quartz-demo java-quartz-demo 可以实现添加任务 删除任务 定义任务执行时间,项目中的jar包已经存在于zip中,下载下来直接运行
java-springboot-quartz-定时任务.zip
quartz-all-1.6.0.jar包,创建Java定时任务,指定时间启动程序
quartz-all-1.6.0 jar包 java定时任务
Quartz-2.2.1 任务调度框架在Java项目中的使用实例 Demo 在这个小Demo 中使用了Java 类的反射机制,通用的项目实例,高度抽象的实例。 在业务需求不是很复杂的情况下,完全可以减少因为使用Quartz任务调度框架的代码...
Quartz是一个完全由java编写的开源作业调度框架,说人话就是你可以创建一些任务,规定这些任务什么时候执行、执行几次等。quartz-2.2.3-Jar包,经测试只需要引入quartz-2.2.3.jar、quartz-jobs-2.2.3.jar和slf4j-api...
quartz-1.6.4.jar是java做定时转换任务所需的jar包
最新quartz-1.7.3,Java处理定时任务。
quartz-all-1.6.6.jar ...否则报错 java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class
quartz-1.6.2最新包,Quartz 是什么,大概不需多加说明,简单讲就是一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。
Quartz-2.2.1 任务调度框架在Java项目中的使用实例 Demo 在这个小Demo 中使用了Java 类的反射机制,通用的项目实例,高度抽象的实例。 在业务需求不是很复杂的情况下,完全可以减少因为使用Quartz任务调度框架的代码...
java 定时任务 quartz all 2.1.6
quartz.jar spring java 定时任务框架
quartz-2.2.3 版本的包,用于老版本的java定时任务。可以下载学习。
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。...Jobs可以做成标准的Java组件或 EJBs。Quartz的最新 版本为Quartz 1.6.5。
spring整合quartz动态定时任务demo-spring-quartz-demo
Quartz是一个完全由java编写的开源作业调度框架。它有一个插件,这个插件负责读取xml配置文件。xml配置文件包含了关于启动Quartz应用的作业和触发器信息。所有xml文件中的作业连同相关的触发器都被加进调度器。你...
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,...
动态定时任务 SpringBoot quartz集群分布式。动态指定任意-demo-quartz-dynamic