Quartz是很常用的定时器组建包。
一 quartz简单使用
1. 任务job类 SimpleJob.java
package quartz.job; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class SimpleJob implements Job{ private static int count=0; @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { count++; System.out.println("Now the count is "+count+"."); } public void execute(){ count++; System.out.println("Now the count is "+count+"."); } }
Note:SimpleJob中有2个execute方法。带参数的是用于非Spring整合时调用的,不带参数的是用于与Spring整合时调用的。 【PS:可以通过类型添加类型转换器直接调用带参数的那个execute】
2. 定时器工具类 LocalScheduler.java 类
package quartz.traditional; import java.text.ParseException; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory; public class LocalScheduler { private static SchedulerFactory sf = new StdSchedulerFactory(); private static String JOB_GROUP_NAME = "group1"; private static String TRIGGER_GROUP_NAME = "trigger1"; /** * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 * @param jobName 任务名 * @param job 任务 * @param time 时间设置,发考quartz说明文档 * @throws SchedulerException * @throws ParseException * @throws java.text.ParseException */ @SuppressWarnings("rawtypes") public static void addJob(String jobName, Class jobClass, String time) throws SchedulerException, ParseException { Scheduler sched = sf.getScheduler(); // 触发器任务 JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME,jobClass);// 任务,任务组,任务执行类 // 触发器时间设定 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);// 触发器名,触发器组名 trigger.setCronExpression(time); // 发动 sched.scheduleJob(jobDetail, trigger); if (!sched.isShutdown()) sched.start(); } /** * 修改一个定时任务,使用默认的任务组名,触发器名,触发器组名 * @param jobName * @param time * @throws SchedulerException * @throws ParseException */ @SuppressWarnings("rawtypes") public static void modifyJobTime(String jobName,Class jobClass, String time) throws SchedulerException, ParseException { removeJob(jobName); addJob(jobName,jobClass,time); } /** * 移除一个定时任务,使用默认的任务组名,触发器名,触发�器组名 * @param jobName * @throws SchedulerException */ public static void removeJob(String jobName) throws SchedulerException { Scheduler sched = sf.getScheduler(); sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);// 暂发触发器 sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);// 移除触发器 sched.deleteJob(jobName, JOB_GROUP_NAME);// 删除任务 } /** * 关闭定时 * @throws SchedulerException */ public static void stop() throws SchedulerException{ sf.getScheduler().shutdown(); } }
3. 测试类 Main.java
package quartz.traditional; import quartz.job.SimpleJob; public class Main { public static void main(String[] args) throws Exception { // 启动一个任务 LocalScheduler.addJob("simpleJob", SimpleJob.class, "0/1 * * * * ?"); // 修改任务执行时间间隔 LocalScheduler.modifyJobTime("simpleJob",SimpleJob.class,"0/10 * * * * ?"); // 移除任务 LocalScheduler.removeJob("simpleJob"); // 关闭定时器 LocalScheduler.stop(); } }
二 Spring整合quartz
1. Spring配置文件quartz.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- ==================== quartz ==================== --> <bean id="simpleJob" class="quartz.job.SimpleJob"/> <bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="simpleJob"/> <property name="targetMethod" value="execute"/> <property name="concurrent" value="false" /> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobTask"/> <property name="cronExpression"> <value>0/1 * * * * ?</value> </property> </bean> <bean id="quartzScheduler" autowire="no" lazy-init="true" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean> </beans>
2. 测试类 Main.java
package quartz.spring; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) throws Exception { new ClassPathXmlApplicationContext("quartz/spring/quartz.xml"); } }
相关推荐
在这个Quartz入门例子中,可能包含了一个名为`QuarzTest`的类或配置文件,它是实际运行的入口。通过分析和运行这个例子,你可以了解到如何在Spring中配置和使用Quartz,以及如何创建和调度Job。 学习Quartz时,你...
二、Quartz入门 1. **创建作业**:首先,你需要创建一个实现了`org.quartz.Job`接口的类,这个类就是你的任务逻辑。在`execute()`方法中编写实际的业务代码。 2. **定义触发器**:接着,定义一个触发器,设置执行...
通过阅读 "quartz入门共3页.pdf",你将能够快速了解 Quartz 的基本概念和用法,为实际项目开发打下基础。文件可能涵盖了 Quartz 的安装、基本示例、API 使用方法等内容,帮助你快速上手并掌握这个强大的任务调度库。
"Quartz入门.html"这个文档可能详细介绍了如何设置和启动一个简单的Quartz调度程序。通常,你需要创建一个Job类,该类实现了`org.quartz.Job`接口,并重写了`execute`方法,这是实际执行的任务逻辑。然后,你可以...
在"Quartz入门案例"中,我们通常会首先创建一个Job类,该类实现了`org.quartz.Job`接口。这个接口只有一个方法`execute(JobExecutionContext context)`,我们在其中编写实际的任务逻辑。例如: ```java public ...
【标题】"Quartz入门Demo"是一个非常适合初学者的实践项目,它旨在引导开发者了解和掌握Quartz这个强大的任务调度框架。Quartz是Java平台上广泛使用的开源任务调度库,能够帮助开发者实现应用程序中的定时任务执行。...
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群...
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。
Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...
NULL 博文链接:https://aiien007.iteye.com/blog/2105833
简单介绍quartz用法,介绍quartz用法步骤
3. **Quartz入门** - **创建Job类**:你需要创建一个实现了`org.quartz.Job`接口的类,这个类定义了具体要执行的任务。 - **定义Trigger**:你可以选择不同的`Trigger`类型,如SimpleTrigger或CronTrigger,来决定...
在《Quartz入门》文档中,通常会详细讲解如何配置Quartz,包括XML配置、代码配置,以及如何处理并发问题、异常处理和集群部署。确保阅读并理解这些内容,以便更好地在实际项目中应用Quartz。 总之,Quartz是一个...
"Quartz入门与提高1.ppt"可能是一个幻灯片教程,涵盖了从基础到进阶的Quartz使用。"定时任务Test.rar"可能包含了一些测试用例或示例代码,有助于理解实际应用场景。"网站地址.txt"可能提供了更多资源链接,而"quartz...