当前位置: 首页 > news >正文

java web每天定时执行任务

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 

来自:http://www.jsprun.net/thread-35542-4-1.html

参考:http://blog.csdn.net/yangzl2008/article/details/7045369

java定时任务,每天定时执行任务

java定时任务,每天定时执行任务。以下是这个例子的全部代码。


public class TimerManager {


 //时间间隔
 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
 
 public TimerManager() {
  Calendar calendar = Calendar.getInstance();  
        
  /*** 定制每日2:00执行方法 ***/ 


  calendar.set(Calendar.HOUR_OF_DAY, 2);
  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();
  
  NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
  //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
  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();
 }
 
}


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


public class NFDFlightDataTimerTask extends TimerTask {


 private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);


 @Override
 public void run() {
  try {
   //在这里写你要执行的内容
   
  } catch (Exception e) {
   log.info("-------------解析信息发生异常--------------");
  }
 }
}


public class NFDFlightDataTaskListener implements ServletContextListener {
 
 public void contextInitialized(ServletContextEvent event) {
  new TimerManager();
 }


 public void contextDestroyed(ServletContextEvent event) {
 }


}


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


<listener>
 <listener-class>
  com.listener.NFDFlightDataTaskListener
 </listener-class>
</listener>

转载于:https://my.oschina.net/zlp5201/blog/404141

相关文章:

  • 第3章 Java语言基础----声明常量
  • 颜色对比比率计算
  • mysql数据库中的using
  • 将分页功能从JSP页面中独立出来
  • Azure多网卡虚拟机
  • UNIX常见命令索引 (echo,find,xargs)
  • IMG-后勤执行-仓库管理-仓库管理概念-实际数据的执行记录(WM-1)
  • JavaScript数据结构-字典
  • 《Effective C++》第4章 设计与声明(2)-读书笔记
  • 4.PowerShell -- 数组,哈希表
  • iPhone取消软件更新上边的1
  • CentOS禁用root本地或远程ssh登录
  • nginx 自定义header 如何获取
  • 电子词典--两次扫描文件发/链表法
  • PL/SQL-05
  • 深入了解以太坊
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Brief introduction of how to 'Call, Apply and Bind'
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Hibernate最全面试题
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript设计模式系列一:工厂模式
  • magento2项目上线注意事项
  • MD5加密原理解析及OC版原理实现
  • RxJS: 简单入门
  • scrapy学习之路4(itemloder的使用)
  • Vue官网教程学习过程中值得记录的一些事情
  • 爱情 北京女病人
  • 官方解决所有 npm 全局安装权限问题
  • 基于axios的vue插件,让http请求更简单
  • 两列自适应布局方案整理
  • 实战|智能家居行业移动应用性能分析
  • 算法-图和图算法
  • 微服务框架lagom
  • 整理一些计算机基础知识!
  • ​linux启动进程的方式
  • ###项目技术发展史
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (libusb) usb口自动刷新
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • 、写入Shellcode到注册表上线
  • .Net6使用WebSocket与前端进行通信
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET中使用Protobuffer 实现序列化和反序列化
  • ??myeclipse+tomcat
  • @GetMapping和@RequestMapping的区别
  • @staticmethod和@classmethod的作用与区别
  • @取消转义
  • [Android]如何调试Native memory crash issue