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

Posted qq503012154

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的部分代码截图如下:

    技术分享图片

    控制台输出如下:

    技术分享图片

 

 

 

 

 

    

以上是关于JAVA定时任务调度之Timer入门详解的主要内容,如果未能解决你的问题,请参考以下文章

Java定时任务工具详解之Timer篇

Java入门——定时调度

Java定时任务调度详解

Java定时任务调度详解

JUC并发编程 共享模式之工具 ThreadPoolExecutor -- 任务调度线程池 定时任务 / 延时执行(Timer的缺点)

java定时任务调度工具