欢迎使用CSDN-markdown编辑器
来源:互联网 发布:淘宝客怎么开通条件 编辑:程序博客网 时间:2024/06/10 02:06
Java 定时每天某个时间段执行任务(开发笔记)
在特殊的功能需求下,我们需要随着tomcat的启动定时执行一些任务。在开发当中需要每天检查用户退款申请,实现批量自动退款功能。
1、新建一个task,继承java的timerTask类,创建自己要执行的任务的代码块。
public class NFDFlightDataTimerTask extends TimerTask {
private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
public static String appId=”“;
HttpServletRequest request;
HttpServletResponse response;
@Override
public synchronized void run() {
try {
System.out.println(“开始”);
List list= new MyTask().getUserID();
synchronized(this) {
for (int a : list) {
try {
调用代码段
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Thread.sleep(5000);//等待微信返回退款结果在进行下一个用户退款申请
} }
} catch (Exception e) {
log.info(“————-解析信息发生异常————–”);
}
}
2、新建一个TimerManager类来制定执行计划;
public class TimerManager {
//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/* 定制每日执行批量退款方法 */
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 10);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}
Timer timer = new Timer();
NFDFlightDataTimerTask task = new FDFlightDataTimerTask();
timer1.schedule(task1,date1,PERIOD_DAY);
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
}
// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
3、新建一个监听器监听tomcat启动,当启动时自动执行定时计划
public class NFDFlightDataTaskListener implements ServletContextListener {
private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
public void contextInitialized(ServletContextEvent event) {
log.info(“次数a”);
new TimerManager();
}
public void contextDestroyed(ServletContextEvent event) {
}
}
4、进行web.xml配置Listener ,就完成了一个定时执行任务。
com.test.NFDFlightDataTaskListener
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 递归---整数数组元素A[0]~A[i]中的最小值
- Smoothing and normal estimation based on polynomial reconstruction
- Python与机器学习之数据可视化(四)
- Statement和PreparedStatement之间的区别(自学时遇到的问题)
- 深度学习的异构加速技术(一):AI 需要一个多大的“心脏”?
- 欢迎使用CSDN-markdown编辑器
- 梅特卡夫定律与网络价值
- 【java】org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '&' 后面。解决方法
- BP神经网络及其C++实现
- 性能测试报告实例
- chrome扩展程序白名单
- 李航第二章课后习题
- GET,POST,PUT,DELETE的区别
- 公众号微信内置地图在ios上不显示问题