javaTimer怎么定时执行任务
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要讲解了"javaTimer怎么定时执行任务",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"javaTimer怎么定时执行任务"吧!下面给大家
千家信息网最后更新 2025年01月20日javaTimer怎么定时执行任务
这篇文章主要讲解了"javaTimer怎么定时执行任务",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"javaTimer怎么定时执行任务"吧!
下面给大家介绍java Timer 定时每天凌晨1点执行任务,具体代码如下所示:
import java.util.TimerTask;/** * 执行内容 * @author admin_Hzw * */public class Task extends TimerTask { public void run() { System.out.println("我有一头小毛驴!"); }}import java.util.Calendar;import java.util.Date;import java.util.Timer;/** * 任务管理 * @author admin_Hzw * */public class TimerManager { /** * @param args */ public static void main(String[] args) { new TimerManager(); } //时间间隔(一天) private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 1); //凌晨1点 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(); Task task = new Task(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。 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(); }}
知识点扩展:java中实现定时任务每天规定时间执行任务一次
第一步
package com.eh.util;import java.util.Calendar;import java.util.Date;import java.util.Timer;/** * java定时任务,每天定时执行任务 * @author wls * */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, 16); calendar.set(Calendar.MINUTE, 10); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次执行定时任务的时间 System.out.println(date); System.out.println("before 方法比较:"+date.before(new Date())); //如果第一次执行定时任务的时间 小于 当前的时间 //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准 if (date.before(new Date())) { date = this.addDay(date, 1); System.out.println(date); } 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(); }}
第二部
package com.eh.util;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.TimerTask;/** * 在 TimerManager 这个类里面,大家一定要注意 时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后 *发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况 *发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。 * @author wls * */public class NFDFlightDataTimerTask extends TimerTask { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void run() { try { //在这里写你要执行的内容 System.out.println("执行当前时间"+formatter.format(Calendar.getInstance().getTime())); } catch (Exception e) { System.out.println("-------------解析信息发生异常--------------"); } }}
第三部
package com.eh.util;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class NFDFlightDataTaskListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { new TimerManager(); } public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub }}
第四步:配置web.xml文件
com.eh.util.NFDFlightDataTaskListener
感谢各位的阅读,以上就是"javaTimer怎么定时执行任务"的内容了,经过本文的学习后,相信大家对javaTimer怎么定时执行任务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
任务
时间
第一次
加一
内容
情况
学习
天数
方法
知识
知识点
问题
延迟
服务
一头
代码
信息
周期
基础
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么查看数据库连接数
android 数据库切换
有网络安全法吗
建立数据库排序规则选什么
服务器jdk8 tsl
web前端获取数据交给数据库
氓翻译软件开发
数据库 附加
架构游戏服务器
mysql数据库主主搭建
orale数据库集群配置
刀剑乱舞服务器满员
归属地数据库是什么原因
武汉靠谱的软件开发方案
研究计算机网络技术的目的
杨浦区信息软件开发服务报价表
易迈互联云服务器是哪里的
电脑服务器增加带宽
北京云端雅图软件开发
腾讯微云服务器后台怎么登录
天津一对一网络技术服务信息推荐
高德地图 地图服务器
数据库物理文件路径怎么修改
软件开发究竟难在哪里
汉威科技工业互联网排名
服务器2008什么时候发布
杭州软件开发合法吗
德州软件开发培训教学哪家好
教育随笔网络安全
网络安全敌情观念