`

Java Web项目中的定时器实现

    博客分类:
  • java
阅读更多
在Java的6.0版本中新增了concurrent包,这个包是用作线程同步的包,提供了很多工具类。
其中定时器就是其中之一。近期在做一个项目,在项目中要实现启动Web服务的同时启动一个任务,要求此任务为守护进程,定时调用一些任务操作代码。在网上搜索相关的实现,综合考虑得出一个解决方案。方案是:使用tomcat服务器的监听器类作守护进程,调用concurrent包提供的定时器,最后在定时器中调用操作实现代码。具体实现类Translator在这里不再给出,将其替换为自己需要的实现类即可。

定时器类:

import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import com.translate.Translator; 

/**
 * 定时器类
 * @author ahomeeye
 */
public class TranslateTimer {

	private final ScheduledExecutorService scheduler = Executors
			.newScheduledThreadPool(1);
	Translator tranChinese = new Translator(); //操作实现类,我这里为翻译类

	public void executeTranslateTimer() {

		Runnable task = new Runnable() {

			public void run() {
				// 翻译
				tranChinese.translateGo(); //调用操作实现方法
				
				System.out.println("--------------翻译:" + new Date().getTime()
						+ "------------------");
			}
		};
        if (scheduler.isShutdown()) {
            scheduler = Executors.newScheduledThreadPool(1);
            scheduler.scheduleAtFixedRate(task, 10, 30, TimeUnit.SECONDS);
        } else {
            scheduler.scheduleAtFixedRate(task, 10, 30, TimeUnit.SECONDS); // 延迟10秒,每隔30秒翻译一次
        }
	}

 //停止任务,不再提交新任务,已提交任务会继续执行以致完成
  public void stop() {
        scheduler.shutdown();
  }

}


监听器类:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.send.timer.SendDataTimer;
import com.send.timer.TransferDataTimer;
import com.send.timer.TranslateTimer;

public class StartTimerListener implements ServletContextListener {

	TranslateTimer tranTimer = null;

	/**
	 * 创建一个初始化监听器对象,一般由容器调用
	 */
	public StartTimerListener() {
		super();
	}

	/**
	 * 让Web程序运行的时候自动加载Timer
	 */
	public void contextInitialized(ServletContextEvent e) {
		System.out.println("-------------StartTimerListener.init-------------");
		tranTimer = new TranslateTimer(); // 启动翻译数据定时器
		tranTimer.executeTranslateTimer();
	}

	/**
	 * 该方法由容器调用 空实现
	 */
	public void contextDestroyed(ServletContextEvent e) {
	}
}


在Java Web项目的web.xml文件中加入以下几行,注意包路径,向tomcat服务器声明监听器。

	<listener>
		<listener-class>com.servlet.StartTimerListener</listener-class>
	</listener>



分享到:
评论
2 楼 xghana 2015-09-10  
非常好啊啊!
1 楼 qinzl_1 2014-07-29  

太给力了

相关推荐

    java web定时器例子

    Java Web定时器主要指的是在Java Web应用程序中实现定时任务的功能,这在许多业务场景中都是必要的,例如数据备份、报表生成、邮件发送等。在Java中,我们可以利用内置的`java.util.Timer`类或者Spring框架的`@...

    java定时器结合spring

    Java定时器结合Spring框架可以创建灵活且可扩展的定时任务,这种技术在许多企业级应用中非常常见,用于执行周期性的后台任务,如数据清理、报告生成或服务调用等。下面将详细介绍如何在Spring中集成Java定时器,并...

    JAVA中定时器的使用

    JAVA 中提供了多种方式来实现定时器,包括使用 Timer 和 TimerTask 类,使用 ScheduledExecutorService 等。 在 JAVA 中,Timer 和 TimerTask 是两个基本的类,用于实现定时器。Timer 类用于创建一个新的定时器,而...

    web定时器的实现思路

    这篇博文链接指向的是一个关于在Java应用程序中实现Web定时任务的讨论,虽然具体的细节没有给出,但我们可以根据这个主题来深入探讨Web定时器的实现思路。 1. **Java定时框架** - ** Quartz Scheduler**:Quartz是...

    JAVA WEB程序中添加定时器

    JAVA WEB程序中添加定时器是指在JAVA WEB程序中实现定时执行某些任务的功能。定时器可以根据需要执行特定的任务,例如数据备份、发送邮件、清理缓存等。在JAVA WEB程序中添加定时器可以使用Java的Timer和TimerTask类...

    Java_Web定时器使用

    ### Java Web定时器使用详解 #### 一、Java定时器简介 Java定时器(`java.util.Timer`)是Java标准库中的一个实用工具类,它主要用于执行周期性的或一次性计划任务。通过设置定时器的间隔时间,可以在指定的时间...

    java 定时器 spring 定时器

    Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...

    quartz通过cron实现web项目定时器

    Quartz是一款强大的、开源的作业调度框架,常用于Java应用程序中,包括Web项目,来实现定时任务的执行。本文将详细介绍如何使用Quartz结合cron表达式在Web项目中创建一个定时器。 首先,理解Quartz的基本概念至关...

    Java-Web定时器使用.doc

    Java Web定时器是一种在Web应用程序中定期执行特定任务的机制,它主要依赖于Java的`java.util.Timer`类和`java.util.TimerTask`类。在Java Web开发中,定时任务通常用于后台数据处理、定时备份、日志清理等场景。...

    web定时器组件

    在本文中,我们将深入探讨Web定时器组件的概念、实现方式以及在Java中的应用。 一、Web定时器组件的重要性 1. 自动化任务:定时器组件可以自动化执行重复性或计划性的任务,减轻开发人员手动操作的负担。 2. 提高...

    java定时器的实现

    ### Java定时器的实现 #### 一、概述 在Java编程中,定时执行特定任务是一种常见的需求。...通过以上分析可以看出,Java定时器的实现相对简单且易于理解,但在实际项目中还需要根据具体情况灵活选择合适的技术方案。

    java_Timer定时器实例_Spring实例

    标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...

    Java定时器

    `Timer`类位于`java.util`包中,是Java中实现定时任务的核心类。它负责调度任务并在指定的时间点执行它们。要使用`Timer`,首先需要实例化一个`Timer`对象,然后调用`schedule`方法来安排任务的执行。 - **实例化**...

    java,javaweb,spring定时器

    在Web应用中,例如在Java Web项目中,我们可以利用Servlet容器的特性或者Spring框架提供的定时任务支持来实现定时任务。 首先,让我们来看看Java内置的定时器`java.util.Timer`。这个类提供了计划在将来某一时刻...

    javaweb 定时器工程

    在Java Web开发中,定时任务是一项非常重要的功能,它允许我们按照预定的时间间隔执行特定的任务,比如数据库备份、清理缓存、发送邮件等。在这个"javaweb 定时器工程"中,主要涉及到了两个关键组件:Quartz和...

    Java定时器在Web中的应用.doc

    Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...

    javaweb 定时器的几种方式

    javaweb的几种定时方式,有助于了解定时的工作原理。对于定时器不了解的朋友可以看看

    java web 定时器

    javaweb定时器,需要tomcat6,部署后启动tomcat,访问index.jsp页面,定时器工作,kill Tomcat服务结束工作,本人用的Sql2000数据库,可以自行更改。完整工程源代码。

    spring和java定时器

    在提供的Java代码片段中,`SPListener`实现了`ServletContextListener`接口,这意味着它会在Web应用启动时初始化,并在Web应用停止时销毁。在这个监听器中,创建了一个`Timer`实例,计划在每天特定时间(15:16:00)...

Global site tag (gtag.js) - Google Analytics