`
shyf12054213
  • 浏览: 33977 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

spring使用timer完成任务调度

阅读更多

Ø         使用TimerTask创建定制的timer tasks
<bean id="timeTaskExample" class="example.timertask.TimeTaskExample"></bean>

<!-- 使用ScheduledTimerTask来包装任务 -->
    <bean id="scheduledTask"
    class="org.springframework.scheduling.timer.ScheduledTimerTask">
       <property name="timerTask" ref="timeTaskExample" />
        <!—
任务执行周期 2m 关于一些任务的参数请参考JDK doc文档和Spring相关文档
注意若要让任务只运行一次,你可以把period属性设置为0(或者负值)
-->
       <property name="period">
           <value>2000</value>
       </property>
       <!-- 延时1m 执行任务 -->
       <property name="delay">
           <value>1000</value>
       </property>
    </bean>

    <!-- 使用TimerFactoryBean来实现任务 -->
    <bean id="timerFactory"
       class="org.springframework.scheduling.timer.TimerFactoryBean">
       <property name="scheduledTimerTasks">
       <list>
       <ref bean="scheduledTask" />
       </list>
       </property>
    </bean>

实例如下:

public class CheckWiner extends TimerTask
{
 private AuctionManager mgr;
 public void setMgr(AuctionManager mgr)
 {
  this.mgr = mgr;
 }

 public void run()
 {
  System.out.println("---------------------");
  try
  {
   mgr.updateWiner();
  }
  catch (AuctionException ae)
  {
   ae.printStackTrace();
  }
 }
}

<bean id="checkWiner" class="org.yeeku.schedule.CheckWiner">
  <property name="mgr" ref="auctionManager"/>
 </bean>

 <bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
  <property name="delay" value="0"/>
  <property name="period" value="86400000"/>
  <property name="timerTask" ref="checkWiner"/>
 </bean>

 <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
  <property name="scheduledTimerTasks">
   <list>
    <ref bean="scheduledTask"/>
   </list>
  </property>
 </bean>

使用 MethodInvokingTimerTaskFactoryBean类, 可以让你周期性的调用某个方法:示例代码如下
package example;

import java.util.Date;

publicclass BusinessObject {
    publicvoid doIt() {
       System.out.println("现在时间: " + new Date());
    }
}
applicationContext.xml设置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="businessObjectExample" class="example.BusinessObject" />
<!-- 周期性的调用某个方法 -->
    <bean id="methodTimeTask"
      class="org.springframework.scheduling.timer.
MethodInvokingTimerTaskFactoryBean">
<!—调用方法的对象-->
       <property name="targetObject" ref="businessObjectExample" />
<!—调用方法的名称-->
       <property name="targetMethod" value="doIt" />
    </bean>
<!-- 使用ScheduledTimerTask来包装任务 -->
    <bean id="scheduledTask"
    class="org.springframework.scheduling.timer.ScheduledTimerTask">
       <property name="timerTask" ref="methodTimeTask" />
       <!-- 任务执行周期 2m -->
       <property name="period">
           <value>2000</value>
       </property>
       <!-- 延时1m 执行任务 -->
       <property name="delay">
           <value>1000</value>
       </property>
    </bean>
<!-- 使用TimerFactoryBean来实现任务-->
    <bean id="timerFactory"
       class="org.springframework.scheduling.timer.TimerFactoryBean">
       <property name="scheduledTimerTasks">
           <list>
              <ref bean="scheduledTask" />
           </list>
       </property>
    </bean>
</beans>

分享到:
评论

相关推荐

    spring timer、quartz俩种任务调度

    `Spring Timer`是Spring框架提供的一个简单任务调度工具,它基于Java的`java.util.Timer`类。通过`@Scheduled`注解,开发者可以在Spring应用上下文中声明一个方法为定时任务。例如: ```java import org.spring...

    Spring使用timer定时器-能精确几点运行定时任务

    Spring提供了多种方式来实现定时任务,其中之一就是使用`Timer`。`Timer`接口源自Java标准库,但在Spring中,我们可以结合它来创建更加灵活的定时任务。本教程将详细介绍如何在Spring中使用`Timer`来实现能精确到几...

    Spring 使用Timer quartz区别

    `Timer` 的工作原理是通过创建一个后台线程,当设定的时间到达时,它会调度任务进行执行。然而,`Timer` 有一些限制,比如它不支持并发任务执行,如果一个任务执行时间过长,会影响到其他任务的调度。此外,`Timer` ...

    Spring的定时任务开发及对Quartz和Timer支持

    通过实现这些接口或使用其默认实现,如ThreadPoolTaskExecutor和ConcurrentTaskScheduler,我们可以轻松地在Spring应用中集成任务调度。 接下来,Spring还支持集成第三方定时任务库,如Quartz和Timer。Quartz是一个...

    spring任务调度实例

    本实例主要探讨了Spring如何实现任务调度,特别是使用Quartz和Timer两种不同的方法。 首先,Quartz是一个开源的作业调度框架,它允许开发者创建、调度和执行作业,这些作业可以是简单的Java类或者Spring Bean。...

    Sring最佳实践-集成任务调度服务

    本实践主要涉及Spring集成两种常见的任务调度库:Spring的Timer和Quartz。这两者都允许开发者在预定义的时间间隔内执行任务,极大地提高了应用的灵活性和效率。下面将详细介绍这两个任务调度工具及其在Spring中的...

    在Spring中使用Timer --实现由时间触发的事件任务.doc

    在Spring中使用`Timer`,有两种主要的方法来创建和调度这些时间触发的事件任务: 1. **继承TimerTask创建任务** 这种方法与传统的Java `Timer`用法相似。你需要创建一个类,继承自`java.util.TimerTask`,并重写`...

    JBPM3.2与Spring结合时任务调度的实现.doc

    JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...

    Spring的quartz和Timer实现定时

    `TimerTask`代表具体的任务,而`Timer`负责调度任务。但`Timer`有一些限制,比如它不是线程安全的,且只有一个线程执行所有任务,这意味着如果一个任务执行时间过长,其他任务将被阻塞。 以下是一个`Timer`的简单...

    Spring的 Scheduled任务调度.docx

    Spring 提供了多种定时任务的实现方式,包括 Java 自带的 Timer、Quartz 和 Spring 自己的 Scheduled 任务调度。在 Spring Boot 中,Scheduled 任务调度变得更加简单易用。 `@Scheduled` 是 Spring 提供的一个注解...

    小码农的代码(四)----------JAVA中Timer定时器与Spring定时任务

    在Java编程语言中,`Timer`类和Spring框架的定时任务是两种常见的实现定时执行任务的方式。本篇文章将深入探讨这两个主题,旨在帮助初学者理解它们的工作原理以及如何在实际项目中应用。 首先,让我们来看一下Java...

    Spring 任务调度

    - **调度任务**:通过`Timer`的`schedule`方法来安排任务。不同重载方法提供了不同的调度方式,如一次性执行、周期性执行等。 - **应用集成**:`Timer`通常作为应用程序的一部分在启动时初始化,可以作为Servlet的...

    java定时任务调度

    在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...

    spring-timer-quartz.zip_namegnd_spring定时任务

    然而,如果需要更复杂的定时任务调度,如基于Cron表达式的定时,Spring推荐使用第三方的调度库,比如Quartz。 Quartz是一个功能强大的开源作业调度框架,它可以与Java应用程序无缝集成,用于执行计划任务。在Spring...

    Spring 框架自带定时任务和Quartz定时任务

    与Spring集成后,可以使用Spring提供的标签来简化Quartz的配置,使得整个任务调度更加方便。 总结来说,定时任务是开发者常用的一种工具,它的实现方式多样,从简单的Java Timer到强大的Quartz框架都有涉及。Spring...

    3. spring版 timer HelloWorld

    在Java中,`java.util.Timer`类是一个用于调度任务的类,它可以按照预定义的时间间隔重复执行某个任务,或者在特定时间点执行一次任务。然而,需要注意的是,`Timer`并不是线程安全的,所以在多线程环境中使用时需要...

    java是使用timer调度的例子

    下面我们将深入探讨如何使用`Timer`进行任务调度,以及与Spring的Quartz框架的对比。 1. **Timer类的基本用法** - 创建`Timer`对象:`Timer timer = new Timer();` - 定义`TimerTask`:创建一个继承自`TimerTask`...

    XXL-JOB分布式任务调度系统培训PPT

    在 Java 生态中,我们可以使用多种定时任务框架,如 Timer、ScheduledExecutorService、Spring Task、Quartz 等。这些框架都有其特点和缺陷,但是 XXL-JOB 的出现为我们提供了一种高效、可靠、灵活的定时任务解决...

    JAVA定时任务调度

    在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`,以及更强大的第三方库如Quartz Scheduler和Spring框架中的`@Scheduled`注解等...

Global site tag (gtag.js) - Google Analytics