JAVA定时任务调度之Timer入门详解(三)
在上篇的JAVA定时任务调度之Timer入门详解(二)文章中,我们介绍了schedule()方法和scheduleAtFixedRate()方法的具体使用情况,已经学会了一些简单的定时任务,接下来我们说下:
一、TimerTask类下的lcancel()和scheduledExecutionTime();
cancel()方法的作用是取消当前TimerTask里的任务。具体实例代码如下:
Mytimer.java代码如下:
MyTimerTask.java部分代码如下,省略了导包还有get、set方法
控制台打印结果如下:
这刚好与我们预期结果相符合,说明cancel()方法可以取消当前TimerTask里的任务。
scheduledExecutionTime()的作用是获得task最近一次计划执行时间返回类型为long。测试代码如下:
控制台打印如下:
第二行为scheduledExecutionTime()方法输出的时间,在这里我们用SimpleDateFormat转化了下格式,输出为第一次执行的时间3秒后。
二、Timer类下的cancel()和purge()方法
cancel()方法的作用是终止此计时器,丢弃所有当前已安排的任务。测试代码涉及两个类,如下:
Cantest.java
MyTimerTask.java的代码如下:
控制台打印结果如下:
在这个地方我不明白的是,为什么cancel()方法执行后,task1还会执行一次,理应不会执行。还有,既然执行了,为什么task2不再执行一次?真的是痛苦,找不到原因。希望 大家看到的也帮我找找原因,一起学习。
purge(); 意义为:从任务队列中移除已经取消的task,cancel()可以取消(停止)任务。此方法返回值为移除的任务task的数量。废话不多说,看实例:
Cantest.java
MyTimerTask.java的代码跟上面一样。
运行后控制台打印如下:
可以发现在5秒后,task2停止执行,task1依然在执行。且在task2执行了cancel()方法之后,puege()方法返回值为1。