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。

 

posted @ 2018-01-11 20:59  玻璃狗不走心  阅读(409)  评论(0编辑  收藏  举报