java 定时器任务模板
1.该定时任务是基于web.xml的监听机制 listener 来实现的
建立监听类:
NFDFlightDataTaskListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; public class NFDFlightDataTaskListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) {
new TimerManager(); //定时器配置方法
} public void contextDestroyed(ServletContextEvent event) {
} }
2.web.xml中配置监听配置
<listener>
<listener-class>
相对路径.NFDFlightDataTaskListener
</listener-class>
</listener>
3.定时器配置方法:
TimerManager.java
import java.util.Calendar;
import java.util.Date;
import java.util.Timer; public class TimerManager { //配置时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() {
Calendar calendar = Calendar.getInstance(); //每日0:00执行方法,循环执行 calendar.set(Calendar.HOUR_OF_DAY, 0); //时,24小时制
calendar.set(Calendar.MINUTE, 0); //分
calendar.set(Calendar.SECOND, 0); //秒 Date date=calendar.getTime(); //第一次执行定时任务的时间 //如果第一次执行定时任务的时间 < 当前的时间,任务立即执行,所以加一天
if (date.before(new Date())) {
date = this.addDay(date, 1);
} Timer timer = new Timer(); //Timer相当于一个调度器,调度继承TimerTask的方法类,是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。
//NFDFlightDataTimerTask.java需要执行的方法
NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
} // 设置每次执行时间间隔,24小时便是每天执行
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
4.编写定时执行方法
NFDFlightDataTimerTask.java 此类继承了TimerTask TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask; @Component
public class NFDFlightDataTimerTask extends TimerTask { @Override
public void run() {
try{
//编写需要执行的方法 } catch ( Exception e ) {
log.info("系统异常"+e.getMessage());
}
}
}
java 定时器任务模板的更多相关文章
- java 读写word java 动态写入 模板文件
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- java定时器和多线程实践记录
这几天因为需要测试mongodb读写分离的问题,因此写了个定时查询程序,并且用到了多线程,以达到定时启动多个线程查询数据库的效果,下边代码记录备忘: package timmer; import ja ...
- java定时器,Spring定时器和Quartz定时器
一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...
- Java定时器:Timer
项目中往往会遇到需要定时的任务,例如订单,当用户在某个规定时间内没有操作订单时,订单状态将会发生改变. 那么在这种情况下,我们会用到定时器. 举例: import java.util.Timer; / ...
- Java定时器应用
在Java多线程中,有的时候,我们需要按照指定间隔时间来执行一些任务,这时,我们就要用到定时器.我们在这里以Java中的Timer定时器为例,演示定时器的应用. 请看下述代码: import java ...
- eclipse中添加Java代码注释模板
eclipse中添加Java代码注释模板 1.Window->Preference->Java->Code Style->Code Template,进入注释编辑界面 2.文件 ...
- java定时器实现总结
前言:Java定时器目前主要有3种实现方式:JDK组件,Spring Task,Quartz框架. 1. JDK组件(1) java.util.TimerTask MyTimerTask.java: ...
- java 替换字符串模板(模板渲染)
java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...
- Java定时器TimeTask
package com.alan.timer; import java.util.Calendar;import java.util.Date;import java.util.Timer;impor ...
随机推荐
- Xposed获取微信usernamepassword
请关注我的微信公众号 參考文章:Xposed恶意插件 Android 安全专项-Xposed 劫持usernamepassword实践 0x00 我在之前的文章中演示了一下怎样通过Xposed获取us ...
- POJ 3653 & ZOJ 2935 & HDU 2722 Here We Go(relians) Again(最短路dijstra)
题目链接: PKU:http://poj.org/problem? id=3653 ZJU:problemId=1934" target="_blank">http ...
- Atitit. C# java 的api 文件夹封装结构映射总结
Atitit. C# java 的api 文件夹封装结构映射总结 C# java ref System.Reflection System.Type. java.lang.ref concurren ...
- Openfire 配置连接SQL SERVER(非默认实例)
安装好Openfire之后,紧接着进行配置. 连接数据库的时候遇上问题. 打算用我本机上的一个SQL SERVER做为数据库.但是,我本机装了几个SQL SERVER实例,现在我打算使用的是那个非默认 ...
- oc29--property修饰符
// // Person.h #import <Foundation/Foundation.h> @interface Person : NSObject /* 如果给一个属性同时提供了g ...
- 【POJ 1456】 Supermarket
[题目链接] http://poj.org/problem?id=1456 [算法] 贪心 + 堆 [代码] #include <algorithm> #include <bitse ...
- PCB Genesis加二维码 实现方式
使用incam可以很轻松的增加2维码,这里通过另外一种方式玩转二维码的加法, 使用谷歌zxing.dll类库实现,将文字信息转为bitmap点阵后,在Genesis绘制点即可. 一.incam增加二维 ...
- 浅讲ajax
1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器 ...
- JavaScript学习杂记
1.DOM层级:document(document) --> doctype,documentElement(html) --> head,body(body). 2.offset, cl ...
- POJ 3230 DP
f[i][j]=max(f[i][j],f[i-1][k]-a[k][j]+b[i][j]) i->第i天 j-–>到第j个城市 #include <cstdio> #incl ...