`
iwebcode
  • 浏览: 2071912 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java定时任务,每天定时执行任务(JDK TimerTask)

 
阅读更多
01 publicclassTimerManager {
02
03 //时间间隔
04 privatestaticfinallongPERIOD_DAY =24*60*60*1000;
05
06 publicTimerManager() {
07 Calendar calendar = Calendar.getInstance();
08
09 /*** 定制每日2:00执行方法 ***/
10
11 calendar.set(Calendar.HOUR_OF_DAY,2);
12 calendar.set(Calendar.MINUTE,0);
13 calendar.set(Calendar.SECOND,0);
14
15 Date date=calendar.getTime();//第一次执行定时任务的时间
16
17 //如果第一次执行定时任务的时间 小于 当前的时间
18 //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
19 if(date.before(newDate())) {
20 date =this.addDay(date,1);
21 }
22
23 Timer timer =newTimer();
24
25 NFDFlightDataTimerTask task =newNFDFlightDataTimerTask();
26 //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
27 timer.schedule(task,date,PERIOD_DAY);
28 }
29
30 // 增加或减少天数
31 publicDate addDay(Date date,intnum) {
32 Calendar startDT = Calendar.getInstance();
33 startDT.setTime(date);
34 startDT.add(Calendar.DAY_OF_MONTH, num);
35 returnstartDT.getTime();
36 }
37
38 }


在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后
发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况
发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。


01 publicclassNFDFlightDataTimerTaskextendsTimerTask {
02
03 privatestaticLogger log = Logger.getLogger(NFDFlightDataTimerTask.class);
04
05 @Override
06 publicvoidrun() {
07 try{
08 //在这里写你要执行的内容
09
10 }catch(Exception e) {
11 log.info("-------------解析信息发生异常--------------");
12 }
13 }
14 }
15
16 publicclassNFDFlightDataTaskListenerimplementsServletContextListener {
17
18 publicvoidcontextInitialized(ServletContextEvent event) {
19 newTimerManager();
20 }
21
22 publicvoidcontextDestroyed(ServletContextEvent event) {
23 }
24
25 }


然后要在web.xml里面配置监听器

1 <listener>
2 <listener-class>
3 com.listener.NFDFlightDataTaskListener
4 </listener-class>
5 </listener>
分享到:
评论

相关推荐

    spring + jdk TimerTask定时器

    在Java开发中,定时任务是常见的需求,用于执行周期性的操作,例如数据同步、日志清理等。Spring框架提供了一套强大的定时任务解决方案,而JDK自带的`TimerTask`类则是实现定时任务的基础工具。本文将深入探讨如何在...

    定时任务,JSP

    结合以上知识点,我们可以构建一个系统,用户在deviceManage.jsp页面上设定设备的定时任务,后台使用Quartz或者Spring的定时任务功能执行这些任务,同时在页面上实时显示任务执行情况,提供良好的用户交互体验。...

    java定时任务Timer和TimerTask使用详解

    在Java中,`java.util.Timer` 和 `java.util.TimerTask` 类提供了这样的功能,它们是JDK自带的,不需要引入额外的库。 1. **Timer类**: `Timer` 类是一个线程类,它可以安排在将来的某个时间点执行一个或多个任务...

    java定时器(定时任务)

    Java定时器,也被称为Java定时任务,是Java编程语言中用于执行预定任务的重要工具。它允许程序员设置在未来某个时间点或按照一定周期执行特定代码,从而实现自动化操作。在Java中,有两个主要类用于实现定时任务:`...

    Timer和TimerTask的使用

    `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现定时提醒、定时备份等功能非常有用。 #### 二、...

    详解java定时任务

    【Java定时任务详解】 在Java开发中,有时我们需要在特定的时间点或按一定的频率执行某些任务,这时可以利用Java的定时任务功能。本篇将详细讲解如何使用JDK中的`Timer`类和`TimerTask`类来实现定时任务。 1. `...

    Jdk的Timer 实现定时器

    在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、定时发送通知等。`Timer`类就是用来解决这类问题的。 `Timer`类提供了两种类型的任务...

    详解JAVA Timer和TimerTask

    它可以安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。Timer可以调度任意多个TimerTask,它会将TimerTask存储在一个队列中,顺序调度。如果想两个TimerTask并发执行,则需要创建两个...

    Spring整合TimerTask实现定时任务调度

    Spring框架提供了多种方式来实现定时任务,其中之一就是整合JDK自带的`TimerTask`。本文将详细介绍如何在Spring中使用`TimerTask`实现定时任务调度。 首先,`TimerTask`是Java标准库中的一个类,它实现了`Runnable`...

    java类Timer和TimerTask的使用.pdf

    `Timer`类主要有两个方法来安排任务执行: 1. `schedule(TimerTask task, long delay)`:这个方法会在指定的延迟(以毫秒为单位)后执行一次任务。例如,如果你传递了1000毫秒作为延迟,那么任务将在创建后1秒执行...

    Spring监听器及定时任务实现方法详解

    在Java中,定时任务可以使用java.util.Timer和java.util.TimerTask来实现。Timer类用于调度执行任务,而TimerTask类则是任务的抽象类。可以继承TimerTask类来实现自己的定时任务。 在示例代码中,我们定义了一个...

    jdk定时器调度

    - `schedule(TimerTask task, long delay)`:这是一种固定延迟调度,每次任务执行的延迟会被传递到下一个任务。 - `scheduleAtFixedRate(TimerTask task, long initialDelay, long period)`:这是一种固定速率调度...

    spring+jdk定时器

    Spring框架作为Java领域广泛使用的轻量级框架,提供了与JDK定时器结合以及集成第三方库如Quartz的方式,来实现定时任务。本篇文章将详细探讨“spring+jdk定时器”的实现方式。 首先,我们来看JDK自带的定时器——`...

    java 实现定时的方法及实例代码

    本篇文章将深入探讨Java中实现定时任务的方法,包括使用JDK内置的`Timer`和`TimerTask`类。 首先,`Timer`类是Java中实现定时任务的核心,它提供了一个后台线程来调度和执行定时任务。`Timer`有四个构造函数,但...

    浅谈java定时器的发展历程

    可安排任务执行一次,或者定期重复执行。实际上是个线程,定时调度所拥有的 TimerTasks。TimerTask 是一个抽象类,它的子类由 Timer安排为一次执行或重复执行的任务。实际上就是一个拥有 run 方法的类,需要定时执行...

    java8集合源码-java:JDK8新特性

    对象的最后一个实时引用消失并且所有未完成的任务都已完成执行后,定时器的任务执行线程将正常终止(并成为垃圾收集的对象)。此类是线程安全的:多个线程可以共享一个 Timer 对象无需外部同步。 TimerTask 是一项...

    深入理解Java定时调度(Timer)机制

    "深入理解Java定时调度(Timer)机制" Java定时调度机制是Java中的一种重要机制,它允许开发者在特定时间执行特定的任务。Java中有多种定时调度机制,包括Timer、ScheduledExecutorService等。以下是关于Java定时调度...

    spring2 计划任务

    2. **基于Java的Timer和TimerTask**:虽然Spring更推荐使用Quartz,但同时它也支持使用JDK自带的`java.util.Timer`和`java.util.TimerTask`。这种方式相对简单,适用于简单的定时任务需求。`Timer`类用于创建定时...

    java 定时器

    在实际应用中,Java 5引入的`java.util.concurrent`包下的`ScheduledExecutorService`提供了更强大且灵活的定时任务管理功能,例如支持定时器线程池,可以更精确地控制任务执行和取消,以及更好的线程管理和异常处理...

    SpringBoot 实现定时任务的方法详解

    ScheduledExecutorService 类是 JDK 自带的一个类,该类基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。ScheduledExecutorService 类提供了...

Global site tag (gtag.js) - Google Analytics