JAVA定时任务调度之Timer入门详解(二)

  在上篇的JAVA定时任务调度之Timer入门详解(一)文章中,主要介绍了下Timer,接下来我们一起来看看Timer的一些常用方法。

  1、schedule()的4种用法。

    第一种:schedule(TimerTask task, Date time);

    task:安排的任务,time:具体执行时间。这个函数表达的意义是:在时间等于或超过time的时候执行且执行一次task。测试内容如下

    MyTimerTask.java的代码跟第一篇一样,MyTimer.java的部分代码截图如下:

    

    运行后,控制台输出如下图:

    

    第一行打印当前时间,第二行和第三行打印的是MyTimeTask.java中run()的输出。由此一目了然

    第二种:schedule(TimerTask task, Date firstTime, long period);

    firstTime:指第一次执行task的时间,period指task执行周期。本方法说的是task在时间等于或者firstTime的时候执行一次(第一次),之后每隔period毫秒执行一次。废话少说,直接上代码。

    MyTimer.java的部分测试代码截图如下:

    

    控制台部分输出如下:

    

    第一行打印的是当前时间,第二行和第三行打印的是第一次执行(3秒后),之后每隔两秒执行一次。

    第三种:schedule(TimerTask task, lang delay);

    task:安排的任务,time:具体执行时间。这个函数表达的意义是:在时间等于或超过当前时间的delay毫秒的时候执行且执行一次task。测试内容如下

    MyTimerTask.java的代码跟第一篇一样,MyTimer.java的部分代码截图如下:

    

    控制台输出如下

    

    第一行为当前时间,后两行为当前时间的两秒后task执行的一次输出。

    第四种:schedule(TimerTask task, long delay, long period); 意思是在当前时间的delay毫秒后,task执行第一次,之后每隔period毫秒执行一次。

    第四种相信大家结合第二种和第三种就可以懂了,这里不再给测试代码。

  2.scheduleAtFixedRate()的两种用法

    第一种:scheduleAtFixedRate(TimerTask task, Date firstTime, long period);它和schedule的第二种用法在此处可以理解为相同,都是表示task在时间等于或者firstTime的时候执行一次(第一次),之后每隔period毫秒执行一次。测试代码如下:

    MyTimerTask.java的代码跟第一篇一样,MyTimer.java的部分代码截图如下:

    

    控制台输出如下:

    

    第一行打印的是当前时间,第二三行打印的是当前时间的3秒后task执行的第一次,之后每隔2秒执行一次。

    第二种:scheduleAtFixedRate(TimerTask task, long delay, long period);表示task在经过delay毫秒的时间之后执行第一次,之后每隔period毫秒执行一次。代码如下:

    MyTimer.java的部分代码截图如下:

    

    控制台输出如下:

    

    

原文地址:https://www.cnblogs.com/qq503012154/p/8261449.html

时间: 2025-01-14 16:54:44

JAVA定时任务调度之Timer入门详解(二)的相关文章

java定时任务调度工具Timer与Quartz的区别

Timer与Quartz的区别有三点: 1.出身不同:Timer由jdk直接提供,调用方式简单粗暴,不需要其它jar包支持.Quartz并非jdk自带,需要引入相应的jar包 2.能力区别:主要体现在对时间的控制上.某个具体时间执行具什么任务的话Timer可以轻松搞定,而比如每个星期天早上八点提醒做某事的功能就需要Quartz,因此Quartz对时间的控制远比Timer强大,完善 3.底层机制:

Quartz 入门详解

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表.Jobs可以做成标准的Java组件或 EJBs.官方网站:http://www.opensymphony.com/quartz 相关Jar:   quartz-all-1.6.0.jar   jta.jar   commons-logging-1.1.jar

Java性能分析之线程栈详解(下)

Java性能分析之线程栈详解(下) 转载自:微信公众号"测试那点事儿" 结合jstack结果对线程状态详解 上篇文章详细介绍了线程栈的作用.状态.任何查看理解,本篇文章结合jstack工具来查看线程状态,并列出重点关注目标.Jstack是常用的排查工具,它能输出在某一个时间,Java进程中所有线程的状态,很多时候这些状态信息能给我们的排查工作带来有用的线索. Jstack的输出中,Java线程状态主要是以下几种: 1.BLOCKED 线程在等待monitor锁(synchronized

Java调用SMSLib发送短信详解

项目中需要用到发送短信功能,之前没做过这方面,找人咨询了一下,也网上查了查,发现并不是很复杂.目前项目已经完成了,做个记录以备后用.程序中发送短信主要有4种方法: 1.向当地的运营商申请网关,不需要额外的设备,利用对方提供的 API调用程序发送短信,适用于大型的通信公司.稳定,速度快,适合短信量特别大的需求,需要连接到运营商的网络中,不适合内网项目. 2.短信猫发送短信,借助像 GSM MODEM之类的设备(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人.

Java学习-007-Log4J 日志记录配置文件详解及实例源代码

此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8 有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml.properties)中有详细的介绍,敬请参阅!

【转】Asp.Net MVC3 简单入门详解过滤器Filter

原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码,那我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了. 在Asp.net Mvc

webpack入门详解

webpack入门详解(基于webpack 3.5.4  2017-8-22) webpack常用命令: webpack --display-error-details    //执行打包 webpack -w               // 提供watch方法:实时进行打包更新 webpack -p           // 对打包后的文件进行压缩 webpack -d            // 提供source map,方便调式代码 webpack -dev-server --open 

Java并发编程之---Lock框架详解

Java 并发开发:Lock 框架详解 摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等.Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题.本文以synchronized与Lock的对比为切入点,对Java中的Lock框架的枝干部分进行了详细介绍,最后给出了锁的一些相关概念. 一

java提高篇(九)-----详解匿名内部类

摘自http://blog.csdn.net/chenssy/article/details/13170015 java提高篇(九)-----详解匿名内部类 在Java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式