`

java 定时器Timer应用

    博客分类:
  • java
阅读更多

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Timer;

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

import org.joda.time.DateTime;

import com.xxx.task.xxxTask;
import com.xxx.task.xxxHandleTask;

public class AutoRefundListener implements ServletContextListener{
	private Timer timer = null;
	
	private Timer timer1 = null;
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		if (timer != null) {
			timer.cancel();
		}
		if(timer1 != null){
			timer1.cancel();
		}
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		
		Properties propertie = new Properties();
		InputStream is = AutoRefreshCourseListener.class.getResourceAsStream("/bocmRefund.properties");
		try {
			propertie.load(is);
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//设置任务计划,启动和间隔时间
		long period = 24*60*60*1000;
		//定时任务 执行时间为 明天
		DateTime currentDate = new DateTime(System.currentTimeMillis()).plusDays(1);
		int y = Integer.parseInt(currentDate.toString("yyyy"));
		int m = Integer.parseInt(currentDate.toString("MM"));
		int d = Integer.parseInt(currentDate.toString("dd"));	
		
		int hh = Integer.parseInt(propertie.getProperty("hh"));
		int mm = Integer.parseInt(propertie.getProperty("mm"));
		
		int hh1 = Integer.parseInt(propertie.getProperty("bankhh"));
		int mm1 = Integer.parseInt(propertie.getProperty("bankmm"));
		
		timer = new Timer(true);
		timer.schedule(new xxxTask(), new DateTime(y,m,d,hh,mm,00,000).toDate(), period);	
		timer1 = new Timer(true);
		timer1.schedule(new xxxTask(), new DateTime(y,m,d,hh1,mm1,00,000).toDate(), period);
	}


}

说明:
1.ServletContextListener 项目启动  时 启动定时器Timer ,java定时器Timer
2.schedule方法:下一次执行时间相对于 上一次 实际执行完成的时间点 ,因此执行时间会不断延后

3、scheduleAtFixedRate方法:下一次执行时间相对于上一次开始的 时间点 ,因此执行时间不会延后
4.Timer运行的时候,首先判断当天时间是否超过设定时间,如果超过,就先运行定时任务,并且 下次运行 是按照这次运行推迟 间隔时间 运行的 ,比如定时任务设置凌晨1点运行,间隔时间24小时,现在7点启动项目 会执行一次定时任务,这样的话 下次执行就是 明天的7点,所以要注意 判断当前启动时间 和 定时任务时间的前后
分享到:
评论

相关推荐

    java 定时器(Timer)

    Java定时器(Timer)是Java Swing库中的一个类,它提供了调度任务在未来某个时间执行的能力。这个类主要用于在GUI应用程序中实现定时触发某些操作,比如更新界面、执行动画或者执行周期性的后台任务。Timer类结合了...

    java定时器timer制作

    根据给定的信息,本文将详细解析Java定时器的制作及应用,同时对比.NET中的三种不同类型的定时器,以便更好地理解定时任务的实现方式及其特点。 ### Java定时器基础 Java中定时器(Timer)主要用于执行周期性的...

    Java定时器Timer简述共8页.pdf.zip

    Java定时器(Timer)是Java语言中用于调度任务的一个重要工具,...通过以上内容,我们了解了Java定时器Timer的基本用法和工作原理。在实际开发中,根据具体需求选择适合的定时任务实现方式,以达到最佳性能和可维护性。

    java定时器Timer

    Java定时器(Timer)是Java.util包中的一个类,它提供了调度任务的能力,可以在特定的延迟后或定期执行。在Java编程中,我们有时需要在指定时间执行某些操作,例如发送提醒、执行清理任务等,这时候Java Timer就派上...

    java_Timer_thread.rar_java thread timer_java timer_java 定时器_java

    Java中的定时器(Timer)是Java.util包下用于执行定期任务的一个类,它与线程(Thread)紧密关联,能够帮助开发者实现定时执行特定任务的需求。这个机制在多线程编程(multithreading)中非常有用,特别是在需要定期...

    Java定时器的使用 Java程序

    Java定时器(java.util.Timer)是Java标准库中用于调度任务执行的重要工具,它允许我们按照预设的时间间隔执行特定的任务。在Java程序设计中,定时器常常用于实现周期性的任务,比如定时备份数据、定时检查系统状态...

    JAVA定时器之Timer+TimerTask

    在Java编程语言中,`Timer`和`TimerTask`是两个关键类,它们构成了Java的定时执行机制。这两个类在处理周期性任务或者延迟任务时非常有用,它们可以帮助开发者实现程序在特定时间点或者按照一定间隔执行特定操作的...

    java_Timer定时器实例_Spring实例

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

    Java定时器

    在Java定时器的应用中,`Swing Timer`是一个特别值得注意的类,它是`javax.swing.Timer`,它与`java.util.Timer`不同,主要用于`Swing`组件的事件驱动。`Swing Timer`的优点在于它的回调是在事件调度线程中执行的,...

    java定时器的使用

    在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。

    java5定时器java Timer

    在实际应用中,`Timer`通常用于实现一些简单的定时操作,比如定期检查数据库连接状态、清理缓存、发送通知等。使用`Timer`时,需要注意以下几点: - 任务执行的精确性:由于系统调度和线程上下文切换的影响,定时...

    Java定时器Timer简述

    Java定时器Timer是Java语言中用于执行定时任务的类,它位于`java.util`包下。Timer类提供了在指定时间或周期性执行任务的能力,但需要注意的是,它并不保证任务的实时执行,也就是说,任务的实际执行时间可能会受到...

    java Timer定时器实例 Spring实例.doc

    【Java Timer定时器】 在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` ...

    定时器Timer实例.rar

    这个`定时器Timer实例.rar`压缩包可能包含了演示如何使用这两个类的示例代码。下面将详细介绍`Timer`和`TimerTask`,以及如何在实际应用中使用它们。 1. **Timer类**: `java.util.Timer`是一个调度类,它允许我们...

    java中定时器timer类的实现和源代码.docx

    在实际应用中,Java提供了`java.util.Timer`和`java.util.TimerTask`类,它们是Java标准库的一部分,可以更方便地实现定时任务。`java.util.Timer`类可以安排在未来某一时间运行的任务,而`TimerTask`是一个抽象类,...

    java定时器timer的使用方法代码示例

    Java定时器(Timer)是Java.util包中的一个类,它提供了调度任务的能力,可以在未来的某个时间点或定期执行任务。在上述代码示例中,展示了如何在Web应用启动时使用Timer来安排定时任务。 首先,我们需要了解Timer...

    JAVA定时器时间抓取

    Java定时器和时间处理是Java开发中的重要组成部分,特别是在需要执行周期性任务或者对时间有精确控制的应用场景中。本文将深入探讨Java定时器(Timer)的使用以及如何获取和处理年月日、时间节点等时间相关的信息。 ...

    定时器Timer用法及其源码

    在Java编程语言中,`Timer`类是Java.util包下的一个关键组件,它提供了一种在后台线程中定期执行任务的能力。这个类主要用于计划将来某一时...理解并熟练掌握这些定时工具,对于编写高效、可靠的Java应用程序至关重要。

    java 定时器 spring 定时器

    首先,Java定时器(java.util.Timer)是Java标准库提供的一种基础定时服务。它允许开发者安排一次性或重复的任务,这些任务将以单独的线程运行,不影响主线程的工作。创建定时器时,通常会使用`new Timer()`构造函数...

Global site tag (gtag.js) - Google Analytics