`
dinguangx
  • 浏览: 244330 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring3的任务调度示例

阅读更多

 

软件环境: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

    Spring 整合任务调度框架 Quartz 在软件开发中,任务调度框架是非常重要的一部分,它可以帮助开发者更好地管理和执行各种任务。在 Java 领域中,Quartz 是一个非常流行的任务调度框架,而 Spring 是一个非常流行的 ...

    spring 任务调度实现代码例子

    这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度。下面将详细解释Spring任务调度的关键概念和实现方法。 1. **Spring Task模块** Spring Task是...

    Spring Quartz 任务调度实例

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。结合Spring框架,可以方便地在企业级应用中实现复杂的时间触发逻辑。本实例提供了可以直接运行的任务调度解决方案,既...

    spring任务调度(Quartz )

    在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作原理。 首先,要在Spring中使用Quartz,你需要将`quartz-all-1.5.2.jar`等相关的Quartz库添加到项目的类路径中。...

    最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例

    本资源是一个最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 的一个简单的 demo,也是博客《最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例》的配套示例项目,该博客地址是:...

    spring quartz 任务调度

    Spring框架作为一个全面的企业级应用开发解决方案,提供了强大的任务调度支持,而Quartz则是一个流行的开源作业调度库,能够与Spring很好地集成。现在,我们就来深入探讨"spring quartz 任务调度"这一主题。 首先,...

    Spring 4.2 集成 Quartz2 任务调度示例

    在本文中,我们将深入探讨如何在Spring 4.2.2框架中集成Quartz 2.2.2,实现高效的任务调度。Quartz是一个开源的作业调度框架,它允许开发者安排任务以按照预设的时间间隔运行。而Spring框架是Java企业级应用开发的...

    Spring任务调度demo

    在IT行业中,Spring框架是Java开发中的重要组成部分,它提供了丰富的功能,其中之一就是任务调度。本篇文章将深入探讨Spring任务调度的实现方法,以及如何利用Quartz库来增强任务管理能力。 首先,让我们理解Spring...

    spring quartz任务调度完整可执行

    Spring Quartz 是一个强大的开源作业调度框架,用于在Java应用程序中实现定时任务...这个"spring quartz java任务调度 完整 可执行"的压缩包文件可能包含了所有必要的配置文件、Job类和示例代码,帮助你快速上手实践。

    spring quartz 整合示例

    这个压缩包文件提供了一个实际的示例,用于演示如何在Spring应用中集成Quartz进行任务调度。下面将详细解释其中涉及的知识点。 首先,Quartz是一个开源的作业调度框架,它允许开发者创建、调度和管理重复的任务。在...

    spring定时任务示例程序

    这个"spring定时任务示例程序"旨在演示如何在Spring环境中配置和使用定时任务。本示例使用了Quartz库,它是一个强大的、完全开源的作业调度框架,能够与Java应用程序无缝集成。 **一、Spring集成Quartz** Spring...

    maven spring 任务调度实列

    Spring框架提供了一个强大的任务调度模块——Spring Task,也被称为Spring Batch,它支持基于时间的任务调度和基于事件的任务触发。 首先,我们需要在`pom.xml`文件中添加Spring相关的依赖。这通常包括`spring-...

    spring 定时任务 示例代码

    本示例将深入探讨如何使用Spring的TaskScheduler或者Quartz Scheduler来创建和管理定时任务。 首先,我们要了解Spring的`@Scheduled`注解。这是一个用于方法级别的注解,可以让你轻松地定义一个定时任务。例如: `...

    Spring整合Quartz后的简单定时任务示例

    本资源"Spring整合Quartz后的简单定时任务示例"提供了如何将这两者结合使用的实例,旨在帮助开发者实现基于Spring的定时任务功能。 首先,我们要理解Spring对定时任务的支持。Spring框架通过`@Scheduled`注解提供了...

    Spring定时调度简单实现源码

    这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...

    Spring 任务调度

    【Spring 任务调度】是Spring框架中用于自动化执行任务的功能,它允许开发者安排任务在特定时间或间隔执行,无需用户交互。任务调度在许多场景下都非常有用,比如定期备份数据库、执行系统统计、检查新邮件等。 1. ...

    SSM任务调度demo

    SSM(Spring、SpringMVC、MyBatis)是一个常见的Java Web开发框架组合,而"SSM任务调度demo"则是基于这个框架实现的一个任务调度示例。在这个项目中,主要运用了Quartz作为任务调度的核心组件。Quartz是一个强大且...

    spring集成quartz 任务调度

    Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...

    spring3.0Mvc简单示例

    这个“spring3.0Mvc简单示例”旨在帮助开发者快速理解并入门Spring MVC的基本概念和操作流程。让我们深入探讨一下Spring MVC的核心特性以及如何在项目中设置和使用它。 首先,Spring MVC是Spring框架的一部分,它...

Global site tag (gtag.js) - Google Analytics