软件环境:spring3.1.1
实现目标:测试Spring3的任务调度使用,以及实现任务的暂停与唤醒。
1. Spring3的任务调度
Spring3对任务调度提供了更多的支持,并且提供了新的命名空间task,支持固定时间频率的任务调度和cron表达式。可以替代quartz组件来实现简单的任务调度。本文的目的是要使用spring3自带的任务调度机制实现一个简单的任务调度,并且该任务调度中提供了任务的暂停和唤醒功能。
2. 任务类的编写
任务类不必再继承于TimerTask,而可以是一个普通的java类,方法名可以为任意的public方法,如下。
public class MyTimerTask {
private boolean pause = false;
public void run() {
synchronized (this) {
if (pause) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
print();
}
}
}
private void print() {
System.out.println(new SimpleDateFormat("hh:mm:ss").format(new Date()) + " : MyTimerTask running...");
}
public void pause() {
synchronized (this) {
this.pause = true;
}
}
public void wakeup() {
synchronized (this) {
this.pause = false;
this.notifyAll();
}
}
}
在该类中,提供了一个run()方法做为任务的实际执行过程,并且提供两个方法pause()和wakeup()用来暂停和唤醒任务。
3. 配置文件
在配置文件中使用了task命名空间对任务的调度进行定义,并定义了执行的周期。
<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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task">
<task:scheduler id="messageTaskScheduler" pool-size="5" />
<task:scheduled-tasks scheduler="messageTaskScheduler">
<task:scheduled ref="timerTask" method="run"
fixed-delay="#{3*1000}" />
</task:scheduled-tasks>
<bean id="timerTask" class="task.test.MyTimerTask" />
</beans>
4. 进行任务调度测试
测试类编写如下:
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class MyTaskTest extends AbstractJUnit4SpringContextTests {
@Autowired
private MyTimerTask timerTask;
@Test
public void testTask() throws Exception{
System.out.println(timerTask);
Thread.sleep(30 * 1000);
System.err.println("pause for 20 seconds...");
timerTask.pause();
Thread.sleep(20 * 1000);
System.err.println("wakeup...");
timerTask.wakeup();
Thread.sleep(30 * 1000);
}
}
运行该测试用例,可以在控制台中看到如下输出:
10:40:50 : MyTimerTask running...
10:40:53 : MyTimerTask running...
10:40:56 : MyTimerTask running...
10:40:59 : MyTimerTask running...
10:41:02 : MyTimerTask running...
10:41:05 : MyTimerTask running...
10:41:08 : MyTimerTask running...
10:41:11 : MyTimerTask running...
10:41:14 : MyTimerTask running...
10:41:17 : MyTimerTask running...
pause for 20 seconds...
wakeup...
10:41:41 : MyTimerTask running...
10:41:44 : MyTimerTask running...
10:41:47 : MyTimerTask running...
10:41:50 : MyTimerTask running...
10:41:53 : MyTimerTask running...
10:41:56 : MyTimerTask running...
10:41:59 : MyTimerTask running...
10:42:02 : MyTimerTask running...
10:42:05 : MyTimerTask running...
分享到:
相关推荐
Spring 整合任务调度框架 Quartz 在软件开发中,任务调度框架是非常重要的一部分,它可以帮助开发者更好地管理和执行各种任务。在 Java 领域中,Quartz 是一个非常流行的任务调度框架,而 Spring 是一个非常流行的 ...
这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度。下面将详细解释Spring任务调度的关键概念和实现方法。 1. **Spring Task模块** Spring Task是...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。结合Spring框架,可以方便地在企业级应用中实现复杂的时间触发逻辑。本实例提供了可以直接运行的任务调度解决方案,既...
在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作原理。 首先,要在Spring中使用Quartz,你需要将`quartz-all-1.5.2.jar`等相关的Quartz库添加到项目的类路径中。...
本资源是一个最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 的一个简单的 demo,也是博客《最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例》的配套示例项目,该博客地址是:...
Spring框架作为一个全面的企业级应用开发解决方案,提供了强大的任务调度支持,而Quartz则是一个流行的开源作业调度库,能够与Spring很好地集成。现在,我们就来深入探讨"spring quartz 任务调度"这一主题。 首先,...
在本文中,我们将深入探讨如何在Spring 4.2.2框架中集成Quartz 2.2.2,实现高效的任务调度。Quartz是一个开源的作业调度框架,它允许开发者安排任务以按照预设的时间间隔运行。而Spring框架是Java企业级应用开发的...
在IT行业中,Spring框架是Java开发中的重要组成部分,它提供了丰富的功能,其中之一就是任务调度。本篇文章将深入探讨Spring任务调度的实现方法,以及如何利用Quartz库来增强任务管理能力。 首先,让我们理解Spring...
Spring Quartz 是一个强大的开源作业调度框架,用于在Java应用程序中实现定时任务...这个"spring quartz java任务调度 完整 可执行"的压缩包文件可能包含了所有必要的配置文件、Job类和示例代码,帮助你快速上手实践。
这个压缩包文件提供了一个实际的示例,用于演示如何在Spring应用中集成Quartz进行任务调度。下面将详细解释其中涉及的知识点。 首先,Quartz是一个开源的作业调度框架,它允许开发者创建、调度和管理重复的任务。在...
这个"spring定时任务示例程序"旨在演示如何在Spring环境中配置和使用定时任务。本示例使用了Quartz库,它是一个强大的、完全开源的作业调度框架,能够与Java应用程序无缝集成。 **一、Spring集成Quartz** Spring...
Spring框架提供了一个强大的任务调度模块——Spring Task,也被称为Spring Batch,它支持基于时间的任务调度和基于事件的任务触发。 首先,我们需要在`pom.xml`文件中添加Spring相关的依赖。这通常包括`spring-...
本示例将深入探讨如何使用Spring的TaskScheduler或者Quartz Scheduler来创建和管理定时任务。 首先,我们要了解Spring的`@Scheduled`注解。这是一个用于方法级别的注解,可以让你轻松地定义一个定时任务。例如: `...
本资源"Spring整合Quartz后的简单定时任务示例"提供了如何将这两者结合使用的实例,旨在帮助开发者实现基于Spring的定时任务功能。 首先,我们要理解Spring对定时任务的支持。Spring框架通过`@Scheduled`注解提供了...
这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...
【Spring 任务调度】是Spring框架中用于自动化执行任务的功能,它允许开发者安排任务在特定时间或间隔执行,无需用户交互。任务调度在许多场景下都非常有用,比如定期备份数据库、执行系统统计、检查新邮件等。 1. ...
SSM(Spring、SpringMVC、MyBatis)是一个常见的Java Web开发框架组合,而"SSM任务调度demo"则是基于这个框架实现的一个任务调度示例。在这个项目中,主要运用了Quartz作为任务调度的核心组件。Quartz是一个强大且...
Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...
这个“spring3.0Mvc简单示例”旨在帮助开发者快速理解并入门Spring MVC的基本概念和操作流程。让我们深入探讨一下Spring MVC的核心特性以及如何在项目中设置和使用它。 首先,Spring MVC是Spring框架的一部分,它...