`

Quarzt 入门

阅读更多

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实例,quartz入门例子

    在这个Quartz入门例子中,可能包含了一个名为`QuarzTest`的类或配置文件,它是实际运行的入口。通过分析和运行这个例子,你可以了解到如何在Spring中配置和使用Quartz,以及如何创建和调度Job。 学习Quartz时,你...

    Quartz入门学习(真丶入门)

    二、Quartz入门 1. **创建作业**:首先,你需要创建一个实现了`org.quartz.Job`接口的类,这个类就是你的任务逻辑。在`execute()`方法中编写实际的业务代码。 2. **定义触发器**:接着,定义一个触发器,设置执行...

    quartz入门共3页.pdf.zip

    通过阅读 "quartz入门共3页.pdf",你将能够快速了解 Quartz 的基本概念和用法,为实际项目开发打下基础。文件可能涵盖了 Quartz 的安装、基本示例、API 使用方法等内容,帮助你快速上手并掌握这个强大的任务调度库。

    Quartz入门教程

    "Quartz入门.html"这个文档可能详细介绍了如何设置和启动一个简单的Quartz调度程序。通常,你需要创建一个Job类,该类实现了`org.quartz.Job`接口,并重写了`execute`方法,这是实际执行的任务逻辑。然后,你可以...

    Quartz入门案例

    在"Quartz入门案例"中,我们通常会首先创建一个Job类,该类实现了`org.quartz.Job`接口。这个接口只有一个方法`execute(JobExecutionContext context)`,我们在其中编写实际的任务逻辑。例如: ```java public ...

    quartz入门demo

    【标题】"Quartz入门Demo"是一个非常适合初学者的实践项目,它旨在引导开发者了解和掌握Quartz这个强大的任务调度框架。Quartz是Java平台上广泛使用的开源任务调度库,能够帮助开发者实现应用程序中的定时任务执行。...

    Quartz入门到精通 中文WORD版.rar

    Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群...

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。

    Quartz如何从入门到精通.pdf

    Quartz入门到精通 Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如...

    开源定时器quartz入门

    NULL 博文链接:https://aiien007.iteye.com/blog/2105833

    quartz入门用法

    简单介绍quartz用法,介绍quartz用法步骤

    quartz案例,包括spring配置设置调度器和入门手册

    3. **Quartz入门** - **创建Job类**:你需要创建一个实现了`org.quartz.Job`接口的类,这个类定义了具体要执行的任务。 - **定义Trigger**:你可以选择不同的`Trigger`类型,如SimpleTrigger或CronTrigger,来决定...

    Quartz所需jar包

    在《Quartz入门》文档中,通常会详细讲解如何配置Quartz,包括XML配置、代码配置,以及如何处理并发问题、异常处理和集群部署。确保阅读并理解这些内容,以便更好地在实际项目中应用Quartz。 总之,Quartz是一个...

    Srping Quartz 资料多多

    "Quartz入门与提高1.ppt"可能是一个幻灯片教程,涵盖了从基础到进阶的Quartz使用。"定时任务Test.rar"可能包含了一些测试用例或示例代码,有助于理解实际应用场景。"网站地址.txt"可能提供了更多资源链接,而"quartz...

Global site tag (gtag.js) - Google Analytics