有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单:
1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask
package com.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;
public class TimeTask extends TimerTask {
@Override
public void run() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月 HH:mm:ss");
System.out.println(sdf.format(new Date()));
}
}
2、我们需要启动我们的任务
package com.test;
import java.util.Timer;
/**
* @author dgl
*
*/
public class Say{
public static void main(String[] args) throws Exception {
Timer timer=new Timer();
timer.schedule(new TimeTask(), 1000, 3000);//注册此任务在第一次运行后的1秒钟时间执行,以后每隔3秒钟时间执行一次。
}
}
schedule(TimerTask task, long delay, long period)中task指定了需要执行的任务,delay指定在第一次运行任务后的多少毫秒执行此任务,period参数指定在以后的多少毫秒执行一次任务。
我们可以看到,很遗憾的是Timer只可以指定多久执行一次,并不能指定在具体那个时间点执行这项任务,比如说我们需要每天午夜1:00执行某一任务,而正是QuartZ调度器起作用的时候了。关于QuartZ的更多信息可以访问http://www.opensymphony.com/quartz/,下面让我们来看QuartZ是怎么工作的吧!
创建一项任务
public class Shedule {
//this class do daily task for message awoke and cycle task
public Shedule() {
}
public void say(){
//cycleTask();
messageAwoke();
}
}
package com.test.action;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class DailySay extends QuartzJobBean {
private Shedule sh ;
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
sh.say();
}
public Shedule getSh() {
return sh;
}
public void setSh(Shedule sh) {
this.sh = sh;
}
}
我们使用Spring的注入容器注入Shedule;
2、调度cron任务
在Spring配置文件中
<bean id="task" class="com.test.action.Shedule">
<property name="hibernateSession" ref="hibernateSession"></property>
</bean>
<bean id="job" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.test.action.DailySay"></property>
<property name="jobDataAsMap">
<map>
<entry key="sh" value-ref="task"></entry>
</map>
</property>
</bean>
<bean id="report" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="job"></property>
<property name="cronExpression" value="0 0 1 * * ?"></property>
</bean>
3、启动任务
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="report"/>
</list>
</property>
</bean>
这样你将会完成每天凌晨1:00钟启动Shedule 任务的功能。
分享到:
相关推荐
描述中提到"应对不同版本的spring 与quartz定时任务创建所需要的不同的jar包",这意味着此压缩包中包含的 jar 文件可以用于配置和实现基于 Spring 的 Quartz 定时任务。在 Spring 中,Quartz 可以被集成用来执行后台...
在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...
Java定时任务是应用程序中不可或缺的一部分,它允许程序在特定时间执行特定操作,无需用户干预。在JDK 1.3及以后的版本中,`java.util.Timer`类提供了基础的定时任务支持。不过,`Timer`类的功能相对有限,无法精确...
Quartz是一个功能强大的开源作业调度框架,它可以与Java应用程序无缝集成,用于执行计划任务。在Spring中集成Quartz,我们首先需要添加Quartz和Spring的相关依赖到项目中。这通常在Maven或Gradle的配置文件中完成。 ...
总结来说,这个资源为你提供了一个基础的Spring与Quartz集成案例,通过学习和实践,你可以掌握如何在Spring环境中利用Quartz实现高效、灵活的定时任务管理。同时,它也鼓励开发者之间的分享和交流,共同提升技术能力...
Spring 是一个强大的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)以及众多其他功能,而Quartz则是一个开源的作业调度框架,能够用于创建和执行计划任务。 **Spring 3.0** Spring 3.0 是Spring框架的一个...
本篇文章将深入探讨Java中的三种主要时间调度实现:`Timer`、`TimerTask`、以及第三方库`Quartz`和`Spring`的定时任务功能。 ### 1. Java `Timer` 和 `TimerTask` `java.util.Timer` 类提供了一个调度任务的方法,...
本文将深入探讨Spring框架下实现定时任务的几种主流方法,包括使用`java.util.Timer`(即Java定时器)、Spring定时器以及Quartz定时器,旨在帮助开发者根据具体业务场景选择最合适的技术方案。 ### 1. Java定时器...
### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...
这里,我们关注的是如何使用Java和Quartz Timer实现每天定时执行指定的程序。Quartz是一个强大的、完全开源的作业调度框架,它可以用于创建、调度和执行计划任务。 首先,我们要了解Quartz Timer的工作原理。Quartz...
Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和管理定时任务。Spring框架则是一个广泛应用的全面的企业级应用开发框架,它提供了一种将Quartz集成到Spring应用中的方式,使得任务调度变得更加简单和...
### Spring Quartz 定时器的简单配置与使用 在现代软件开发中,特别是Java领域,定时任务是非常常见...Spring Quartz提供了一个强大而灵活的方式来管理定时任务,使得开发者可以轻松地为应用程序添加定时任务的支持。
Spring的任务调度是应用程序中实现自动化任务执行的关键功能,它允许开发者定义周期性任务而不依赖于人工干预。Spring提供了多种任务调度方案,其中包括对JDK内置的Timer的支持以及与流行的任务调度库Quartz的集成。...
【标题】"quartz+spring定时器"涉及的是在Java应用中使用Spring框架与Quartz库来实现定时任务的管理。Quartz是一个开源的作业调度框架,它允许开发者定义、调度和执行作业,而Spring则提供了强大的依赖注入(DI)和...
例如,可以在 `init()` 方法中使用 `Timer` 或者使用 Servlet 容器支持的定时任务机制,如Quartz Scheduler 或 Spring 的 `@Scheduled` 注解。这种方式更适用于企业级应用,因为它能够更好地集成到现有的应用环境中...
Spring 定时器两种实现方式 Spring 定时器是 Spring 框架中的一种组件,用于实现定时任务的执行。...Spring 定时器提供了两种实现方式,Java Timer 定时和 Quartz 定时器,开发者可以根据实际情况选择合适的实现方式。
本文将深入探讨Spring集成定时任务的几种实现方式,包括Java自带的Timer类、Quartz库以及Spring自3.0版本起提供的Task模块。 首先,我们来看Java自带的`java.util.Timer`类。虽然它允许你调度TimerTask任务,但是它...
1. **Java自带的`java.util.Timer`类**:这种实现方式允许用户调度一个`java.util.TimerTask`任务,并使程序能够按某一频度执行。然而,这种方式不支持在指定时间点执行任务的功能,因此在实际应用中并不常用,本文...