java设置定时任务一小时执行一次(java中如何实现在1小时后执行一个代码)

2025-07-29 23:15:01 :0

java设置定时任务一小时执行一次(java中如何实现在1小时后执行一个代码)

各位老铁们,大家好,今天由我来为大家分享java设置定时任务一小时执行一次,以及java中如何实现在1小时后执行一个代码的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

java中如何实现在1小时后执行一个代码

  • 用线程控制,在休眠一小时后运行!

  • Thread.currentThread().sleep(3600000);
    ...
    你的代码

求高手指点一二,我需要用java编写一个定时器,每天8点开始执行,每一个小时执行一次,过了晚上12点停止

ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        service.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
               if(当前时间》8点){
                   dowork();//你要做的事
               }
               if(当前时间》12点){
                   this.cancel();
               }
            }
        }, 0, 1, TimeUnit.HOURS);

java定时器使用

    定时器类Timer在java util包中 使用时 先实例化 然后使用实例的schedule(TimerTask task long delay)方法 设定指定的任务task在指定的延迟delay后执行 定时器任务类TimerTask是抽象类 继承并重写其run()方法 可实现具体任务         schedule(TimerTask task Date time)设定指定任务task在指定时间time执行         cancel()方法结束这个定时器         schedule(TimerTask task long delay long period)方法设定指定任务task在指定延迟delay后进行固定延迟peroid的执行         scheduleAtFixedRate(TimerTask task long delay long period)方法设定指定任务task在指定延迟delay后进行固定频率peroid的执行         要实现一个定时任务 运用java中的Timer和TimerTask类可以非常容易实现实时调用处理函数 这两个类使用起来非常方便 可以完成我们对定时器的绝大多数需要         看个简单的例子         import java io IOException;        import java util Timer;        public class TimerTest {        public static void main(String args){        Timer timer = new Timer()         timer schedule(new MyTask() ) //在 秒后执行此任务 每次间隔 秒 如果传递一个Data参数 就可以在某个固定的时间执行这个任务         while(true){//这个是用来停止此任务的 否则就一直循环执行此任务了        try {        int ch = System in read()         if(ch c == ){        timer cancel() //使用这个方法退出任务        }        } catch (IOException e) {        // TODO Auto generated catch block        e printStackTrace()         }        }        }        static class MyTask extends java util TimerTask{        @Override        public void run() {        // TODO Auto generated method stub        System out println( ________ )         }        }        }        Servlet侦听器结合Java定时器实现任务计划调度        好多朋友用过Windows的任务计划 也有不少程序迷自己曾写过时钟报警 系统自动关机等趣味程序 可却很少有朋友在Web工程中实现过类似功能 今天有空把笔者先前曾在Tomcat上实现的类似功能 搬出来与大家共享         早在几年前 我公司跟某市财政局合作项目开发 为加强财政局对所属单位财务状况的有效监管 开发 实施了财政局数据中心项目 此项目采用B/S加C/S混合结构模式 财政局Web服务器上架设数据同步接收装置 由市属单位每天下班前把财务信息通过HTTP协议上传至财政局中心服务器 与Web服务器上的接收装置对接 财政局内部各部门需要查阅大量财务信息 获取完备的市属单位当前财务状况信息 各部门按职能划分 需要准确的获取各部门各自所关注的汇总信息 以财政报表的形式提供         因财政数据量大 实时计算财政报表速度较慢 当初就考虑用报表缓存来减轻服务器的负担 但用缓存需要一个合理的缓存更新机制 考虑到各市属单位每天下班前才把财务数据上传 财政局每天所查看到的财务信息其实并不包括当天(除非有某位领导等到所属单位全部上传完之后才来查看信息 应该已经下班了) 所以要是能实现任务计划调度 在每晚深夜把当天及历史财务信息汇总 更新缓存 速度瓶颈不就解决了吗         当时由于系统核心是基于Web部署的 报表计算引擎也相应的部署在Tomcat容器上 因此如果想要借用Windows的任务计划来实现定时计算 就需要额外编写普通桌面应用程序接口 稍显复杂 于是就琢磨着想在Web上实现 经过查阅较多相关资料 发现Java定时器(java util Timer)有定时触发计划任务的功能 通过配置定时器的间隔时间 在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务(java util TimerTask) 另外 由于我们希望当Web工程启动时 定时器能自动开始计时 在整个Web工程的生命期里 定时器能在每晚深夜触发一次报表计算引擎 因此定时器的存放位置也值得考查 不能简单的存在于单个Servlet或JavaBean中 必须能让定时器宿主的存活期为整个Web工程生命期 在工程启动时能自动加载运行 结合这两点 跟Servlet上下文有关的侦听器就最合适不过了 通过在工程的配置文件中加以合理配置 会在工程启动时自动运行 并在整个工程生命期中处于监听状态         下面就Servlet侦听器结合Java定时器来讲述整个实现过程 要运用Servlet侦听器需要实现javax servlet ServletContextListener接口 同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数 考虑定时器有个建立和销毁的过程 看了前面两个接口函数 就不容置疑的把建立的过程置入contextInitialized 把销毁的过程置入contextDestroyed了         我把ServletContextListener的实现类取名为ContextListener 在其内添加一个定时器 示例代码如下所示(为考虑篇幅 仅提供部分代码供读者参考)         private java util Timer timer = null;        public void contextInitialized(ServletContextEvent event) {        timer = new java util Timer(true)         event getServletContext() log( 定时器已启动 )         timer schedule(new MyTask(event getServletContext()) * * )         event getServletContext() log( 已经添加任务调度表 )         }        public void contextDestroyed(ServletContextEvent event) {        timer cancel()         event getServletContext() log( 定时器销毁 )         }        以上代码中 timer schedule(new MyTask(event getServletContext()) * * )这一行为定时器调度语句 其中MyTask是自定义需要被调度的执行任务(在我的财政数据中心项目中就是报表计算引擎入口) 从java util TimerTask继承 下面会重点讲述 第三个参数表示每小时(即 * * 毫秒)被触发一次 中间参数 表示无延迟 其它代码相当简单 不再详细说明         下面介绍MyTask的实现 上面的代码中看到了在构造MyTask时 传入了javax servlet ServletContext类型参数 是为记录Servlet日志方便而传入 因此需要重载MyTask的构造函数(其父类java util TimerTask原构造函数是没有参数的) 在timer schedule()的调度中 设置了每小时调度一次 因此如果想实现调度任务每 小时被执行一次 还需要判断一下时钟点 以常量C_SCHEDULE_HOUR表示(晚上 点 也即 点) 同时为防止 小时执行下来 任务还未执行完(当然 一般任务是没有这么长的) 避免第二次又被调度以引起执行冲突 设置了当前是否正在执行的状态标志isRunning 示例代码如下所示         private static final int C_SCHEDULE_HOUR   = ;        private static boolean isRunning = false;        private ServletContext context = null;        public MyTask(ServletContext context) {        ntext = context;        }        public void run() {        Calendar cal = Calendar getInstance()         if (!isRunning)  {        if (C_SCHEDULE_HOUR == cal get(Calendar HOUR_OF_DAY)) {        isRunning = true;        context log( 开始执行指定任务 )         //TODO 添加自定义的详细任务 以下只是示例        int i = ;        while (i++ 《 ) {        context log( 已完成任务的 + i + / + )         }        isRunning = false;        context log( 指定任务执行结束 )         }        } else {        context log( 上一次任务执行还未结束 )         }        }        上面代码中 //TODO…… 之下四行是真正被调度执行的演示代码(在我的财政数据中心项目中就是报表计算过程) 您可以换成自己希望执行的语句         到这儿 ServletContextListener和MyTask的代码都已完整了 最后一步就是把ServletContextListener部署到您的Web工程中去 在您工程的web xml配置文件中加入如下三行         test ContextListener        当然 上面的 test得换成您自己的包名了 保存web xml文件后 把工程打包部署到Tomcat中即可 任务会在每晚 点至凌晨 点之间被执行 上面的代码会在Tomcat的日志文件中记录如下         : : 开始执行指定任务        : : 已完成任务的 /         ……        : : 已完成任务的 /         : : 指定任务执行结束 lishixinzhi/Article/program/Java/hx/201311/25851

java timer怎么才配置具体的定时任务去调用方法去执行呢

TimerTask那定义一个变量 private static boolean going = false; 然后修改run方法 public void run() { if (going)return; going = true; //做你的事情 going = false; } 这个可以保证2秒执行一次,如果一次任务超过两秒,下一次执行会在开始就结束。等待两秒后再检查 如果希望前一次任务若超过两秒,后一次直接在前一次执行结束立即开始 可以换用Thread Thread t = new Thread(){ private static boolean going = true; public void run() { while(going){ int start = System.currentTimeMillis(); //做你的事 int cost = System.currentTimeMillis() - start; if (cost 《 2000) { try{ sleep(2000 - cost); }catch(Exception ex){} } } } }; t.start();

以上就是我们为大家找到的有关“java设置定时任务一小时执行一次(java中如何实现在1小时后执行一个代码)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

java设置定时任务一小时执行一次(java中如何实现在1小时后执行一个代码)

本文编辑:admin

更多文章:


特殊字符ascii码范围(字符A到Z的ASCII代码是多少)

特殊字符ascii码范围(字符A到Z的ASCII代码是多少)

“特殊字符ascii码范围”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看特殊字符ascii码范围(字符A到Z的ASCII代码是多少)!本文目录字符A到Z的ASCII代码是多少ascii码值是多少大小写字母和数字的ascii

2025年9月22日 12:30

while语句的描述中正确(设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做)

while语句的描述中正确(设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做)

其实while语句的描述中正确的问题并不复杂,但是又很多的朋友都不太了解设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做,因此呢,今天小编就来为大家分享while语句的描述中正确的一些知

2026年1月7日 19:00

sql语句中union用法(mysql中的union用法)

sql语句中union用法(mysql中的union用法)

大家好,sql语句中union用法相信很多的网友都不是很明白,包括mysql中的union用法也是一样,不过没有关系,接下来就来为大家分享关于sql语句中union用法和mysql中的union用法的一些知识点,大家可以关注收藏,免得下次来

2026年2月20日 10:45

jdk怎么读(java的读音到底是怎么读的啊怎么每个人的读法都不一样啊)

jdk怎么读(java的读音到底是怎么读的啊怎么每个人的读法都不一样啊)

其实jdk怎么读的问题并不复杂,但是又很多的朋友都不太了解java的读音到底是怎么读的啊怎么每个人的读法都不一样啊,因此呢,今天小编就来为大家分享jdk怎么读的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录jav

2026年4月30日 15:30

网站已改版 请点击进入(中国卫生人才网怎么进不去了,显示网页无法访问)

网站已改版 请点击进入(中国卫生人才网怎么进不去了,显示网页无法访问)

大家好,网站已改版 请点击进入相信很多的网友都不是很明白,包括中国卫生人才网怎么进不去了,显示网页无法访问也是一样,不过没有关系,接下来就来为大家分享关于网站已改版 请点击进入和中国卫生人才网怎么进不去了,显示网页无法访问的一些知识点,大家

2025年12月24日 18:00

越狱软件下载 苹果(不越狱下载越狱软件)

越狱软件下载 苹果(不越狱下载越狱软件)

其实越狱软件下载 苹果的问题并不复杂,但是又很多的朋友都不太了解不越狱下载越狱软件,因此呢,今天小编就来为大家分享越狱软件下载 苹果的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录不越狱下载越狱软件iPhone6

2026年8月28日 03:00

center形容词(center是中心的意思吗)

center形容词(center是中心的意思吗)

大家好,center形容词相信很多的网友都不是很明白,包括center是中心的意思吗也是一样,不过没有关系,接下来就来为大家分享关于center形容词和center是中心的意思吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2026年9月25日 09:45

企业网站的基本内容(请问建立企业网站要考虑哪些基本内容)

企业网站的基本内容(请问建立企业网站要考虑哪些基本内容)

其实企业网站的基本内容的问题并不复杂,但是又很多的朋友都不太了解请问建立企业网站要考虑哪些基本内容,因此呢,今天小编就来为大家分享企业网站的基本内容的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录请问建立企业网站

2026年4月10日 07:45

c语言程序设计谭浩强2020(谭浩强c语言程序设计多久能学完)

c语言程序设计谭浩强2020(谭浩强c语言程序设计多久能学完)

各位老铁们好,相信很多人对c语言程序设计谭浩强2020都不是特别的了解,因此呢,今天就来为大家分享下关于c语言程序设计谭浩强2020以及谭浩强c语言程序设计多久能学完的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2025年10月12日 00:15

parsefloat js(JS中 parseFloat() 函数)

parsefloat js(JS中 parseFloat() 函数)

本篇文章给大家谈谈parsefloat js,以及JS中 parseFloat() 函数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录JS中 parseFloat() 函数js获得文本框的值怎么转化成数值型啊JS中,通过pa

2026年5月27日 05:00

lengthening是什么意思(Extension Risk是什么意思)

lengthening是什么意思(Extension Risk是什么意思)

各位老铁们好,相信很多人对lengthening是什么意思都不是特别的了解,因此呢,今天就来为大家分享下关于lengthening是什么意思以及Extension Risk是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起

2026年1月1日 21:15

mysql笔试题目及答案(2018年计算机二级考试MySQL巩固试题三)

mysql笔试题目及答案(2018年计算机二级考试MySQL巩固试题三)

各位老铁们好,相信很多人对mysql笔试题目及答案都不是特别的了解,因此呢,今天就来为大家分享下关于mysql笔试题目及答案以及2018年计算机二级考试MySQL巩固试题三的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2025年9月17日 14:45

正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)

正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)

“正弦余弦正切值对照表图”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)!本文目录tan30度 tan45度 tan60度 tan90度

2026年2月5日 19:45

安卓开发语言kotlin(安卓手机游戏《铁锈战争》是什么语言写的)

安卓开发语言kotlin(安卓手机游戏《铁锈战争》是什么语言写的)

各位老铁们好,相信很多人对安卓开发语言kotlin都不是特别的了解,因此呢,今天就来为大家分享下关于安卓开发语言kotlin以及安卓手机游戏《铁锈战争》是什么语言写的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2025年5月28日 22:30

小型linux系统中文版(有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大)

小型linux系统中文版(有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大)

本篇文章给大家谈谈小型linux系统中文版,以及有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘

2025年12月31日 07:00

echarts是中文吗(e chart s是基于什么实现的)

echarts是中文吗(e chart s是基于什么实现的)

大家好,如果您还对echarts是中文吗不太了解,没有关系,今天就由本站为大家分享echarts是中文吗的知识,包括e chart s是基于什么实现的的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录e chart

2025年12月8日 03:00

安装教程视频(路由器怎么安装视频教程)

安装教程视频(路由器怎么安装视频教程)

“安装教程视频”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看安装教程视频(路由器怎么安装视频教程)!本文目录路由器怎么安装视频教程张孝祥java视频教程全集下载电视支架安装视频教程衣服架安装视频教程摄像头安装方法视频教程无

2025年8月9日 01:30

executor用法(线程池之ThreadPoolExecutor使用)

executor用法(线程池之ThreadPoolExecutor使用)

大家好,关于executor用法很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于线程池之ThreadPoolExecutor使用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望

2025年12月22日 01:30

基于solidworks的机械毕业设计(sw如何设计三维机械图SolIDWorks2019三维机械设计制图!)

基于solidworks的机械毕业设计(sw如何设计三维机械图SolIDWorks2019三维机械设计制图!)

本篇文章给大家谈谈基于solidworks的机械毕业设计,以及sw如何设计三维机械图SolIDWorks2019三维机械设计制图!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了

2026年7月9日 23:30

matrix平台(Gitter:面向开发者的跨平台开源社区平台)

matrix平台(Gitter:面向开发者的跨平台开源社区平台)

各位老铁们好,相信很多人对matrix平台都不是特别的了解,因此呢,今天就来为大家分享下关于matrix平台以及Gitter:面向开发者的跨平台开源社区平台的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Gitt

2025年10月29日 17:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索