在上篇的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的部分代码截图如下:
控制台输出如下: