Ø 使用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`是Spring框架提供的一个简单任务调度工具,它基于Java的`java.util.Timer`类。通过`@Scheduled`注解,开发者可以在Spring应用上下文中声明一个方法为定时任务。例如: ```java import org.spring...
Spring提供了多种方式来实现定时任务,其中之一就是使用`Timer`。`Timer`接口源自Java标准库,但在Spring中,我们可以结合它来创建更加灵活的定时任务。本教程将详细介绍如何在Spring中使用`Timer`来实现能精确到几...
`Timer` 的工作原理是通过创建一个后台线程,当设定的时间到达时,它会调度任务进行执行。然而,`Timer` 有一些限制,比如它不支持并发任务执行,如果一个任务执行时间过长,会影响到其他任务的调度。此外,`Timer` ...
通过实现这些接口或使用其默认实现,如ThreadPoolTaskExecutor和ConcurrentTaskScheduler,我们可以轻松地在Spring应用中集成任务调度。 接下来,Spring还支持集成第三方定时任务库,如Quartz和Timer。Quartz是一个...
本实例主要探讨了Spring如何实现任务调度,特别是使用Quartz和Timer两种不同的方法。 首先,Quartz是一个开源的作业调度框架,它允许开发者创建、调度和执行作业,这些作业可以是简单的Java类或者Spring Bean。...
本实践主要涉及Spring集成两种常见的任务调度库:Spring的Timer和Quartz。这两者都允许开发者在预定义的时间间隔内执行任务,极大地提高了应用的灵活性和效率。下面将详细介绍这两个任务调度工具及其在Spring中的...
在Spring中使用`Timer`,有两种主要的方法来创建和调度这些时间触发的事件任务: 1. **继承TimerTask创建任务** 这种方法与传统的Java `Timer`用法相似。你需要创建一个类,继承自`java.util.TimerTask`,并重写`...
JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...
`TimerTask`代表具体的任务,而`Timer`负责调度任务。但`Timer`有一些限制,比如它不是线程安全的,且只有一个线程执行所有任务,这意味着如果一个任务执行时间过长,其他任务将被阻塞。 以下是一个`Timer`的简单...
Spring 提供了多种定时任务的实现方式,包括 Java 自带的 Timer、Quartz 和 Spring 自己的 Scheduled 任务调度。在 Spring Boot 中,Scheduled 任务调度变得更加简单易用。 `@Scheduled` 是 Spring 提供的一个注解...
在Java编程语言中,`Timer`类和Spring框架的定时任务是两种常见的实现定时执行任务的方式。本篇文章将深入探讨这两个主题,旨在帮助初学者理解它们的工作原理以及如何在实际项目中应用。 首先,让我们来看一下Java...
- **调度任务**:通过`Timer`的`schedule`方法来安排任务。不同重载方法提供了不同的调度方式,如一次性执行、周期性执行等。 - **应用集成**:`Timer`通常作为应用程序的一部分在启动时初始化,可以作为Servlet的...
在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...
然而,如果需要更复杂的定时任务调度,如基于Cron表达式的定时,Spring推荐使用第三方的调度库,比如Quartz。 Quartz是一个功能强大的开源作业调度框架,它可以与Java应用程序无缝集成,用于执行计划任务。在Spring...
与Spring集成后,可以使用Spring提供的标签来简化Quartz的配置,使得整个任务调度更加方便。 总结来说,定时任务是开发者常用的一种工具,它的实现方式多样,从简单的Java Timer到强大的Quartz框架都有涉及。Spring...
在Java中,`java.util.Timer`类是一个用于调度任务的类,它可以按照预定义的时间间隔重复执行某个任务,或者在特定时间点执行一次任务。然而,需要注意的是,`Timer`并不是线程安全的,所以在多线程环境中使用时需要...
下面我们将深入探讨如何使用`Timer`进行任务调度,以及与Spring的Quartz框架的对比。 1. **Timer类的基本用法** - 创建`Timer`对象:`Timer timer = new Timer();` - 定义`TimerTask`:创建一个继承自`TimerTask`...
在 Java 生态中,我们可以使用多种定时任务框架,如 Timer、ScheduledExecutorService、Spring Task、Quartz 等。这些框架都有其特点和缺陷,但是 XXL-JOB 的出现为我们提供了一种高效、可靠、灵活的定时任务解决...
在Java中,我们可以使用多种方式来实现定时任务,如Java内置的`java.util.Timer`类、`java.util.concurrent.ScheduledExecutorService`,以及更强大的第三方库如Quartz Scheduler和Spring框架中的`@Scheduled`注解等...