TimerTask的两个重要函数:

1.cancel()

作用:

取消当前TimerTask里的任务

演示:

先在继承了TimerTask的类中添加一个计时器,然后在run方法中合适的位置添加cancel()方法:

public class MyTimerTask extends TimerTask{
private String name; //计时器
private Integer count = 0; public MyTimerTask(String inputName) {
name = inputName;
}
@Override
public void run() {
if(count < 3) {
//以yyyy-MM-dd HH:mm:ss的格式打印当前执行时间
//如2019-4-22 00:00:00
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//打印当前name的内容
System.out.println("Current exec name is:" + name + "--------------" + sf.format(calendar.getTime()));
count ++;
}else {
cancel();
System.out.println("Task cancel!");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

接着在之前建的MyTimer类下面执行

        /*等待delay毫秒后首次执行task
之后每隔period毫秒重复执行一次task
如现在是2019-4-22 00:00:00
则在2019-4-22 00:00:03第一次执行task:打印任务的名字
之后每隔两秒执行一次task*/
myTimerTask.setName("schedule");
timer.schedule(myTimerTask,3000,2000);

执行效果如下:

2.scheduledExecutionTime()

作用:

返回此任务最近实际执行的已安排执行的时间,(例如计划三秒钟之后执行某任务,那么返回的时间就是三秒钟之后的时间)

返回值:

最近发生此任务执行安排的时间,为long型

演示:

        myTimerTask.setName("schedule");
timer.schedule(myTimerTask,3000);
System.out.println("scheduled time is" +
sf.format(myTimerTask.scheduledExecutionTime()));

执行结果如下:



Timer的其他函数

1.cancel()

作用:终止此计时器,丢弃所有当前已安排的任务

演示:

public class CancelTest {
public static void main(String[] args) throws InterruptedException {
//创建Timer实例
Timer timer = new Timer();
//创建TimerTask实例
MyTimerTask task1 = new MyTimerTask("task1");
MyTimerTask task2 = new MyTimerTask("task2");
//获取当前的执行时间并打印
Date starTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("start time is:" + sf.format(starTime));
//task1首次执行是距离现在时间3秒后执行,之后每隔2秒执行一次;
//task2首次执行是距离现在时间1秒后执行,之后每隔2秒执行一次;
timer.schedule(task1, 3000,2000);
timer.schedule(task2, 1000,2000);
//休眠5秒
Thread.sleep(5000); //获取当前的执行时间并打印
Date cancelTime = new Date();
System.out.println("cancel time is:" + sf.format(cancelTime)); //取消所有任务
timer.cancel();
System.out.println("Task all canceled!");
}
}

执行结果:

purge():

作用:

从此计时器的任务队列中移除所有已取消的任务

返回值:

从队列中移除的任务数

演示:

public class CancelTest {
public static void main(String[] args) throws InterruptedException {
//创建Timer实例
Timer timer = new Timer();
//创建TimerTask实例
MyTimerTask task1 = new MyTimerTask("task1");
MyTimerTask task2 = new MyTimerTask("task2");
//获取当前的执行时间并打印
Date starTime = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("start time is:" + sf.format(starTime));
//task1首次执行是距离现在时间3秒后执行,之后每隔2秒执行一次;
//task2首次执行是距离现在时间1秒后执行,之后每隔2秒执行一次;
timer.schedule(task1, 3000,2000);
timer.schedule(task2, 1000,2000);
System.out.println("current canceled task number is:" + timer.purge());
//休眠2秒
Thread.sleep(2000);
//获取当前的执行时间并打印
Date cancelTime = new Date();
System.out.println("cancel time is:" + sf.format(cancelTime));
//取消任务,这里用的是Task的cancel方法,而不是Timer的cancel方法
task2.cancel();
System.out.println("current canceled task number is:" + timer.purge()); }
}

执行效果:

最新文章

  1. .Net 跨平台可移植类库正在进行
  2. 《C++primer》v5 第1章 开始 读书笔记 习题答案
  3. Shifting List Item Values From One List To Another In Oracle Forms
  4. IOS 弹出菜单的动态效果
  5. 企业用户2T(含秒传),普通用户20G
  6. 受众定向-Topic Model
  7. gd库的安装
  8. PyCharm出现TabError: inconsistent use of tabs and spaces in indentation最简单实用的解决办法
  9. 【java设计模式】(4)---工厂模式(案例解析)
  10. sqlserver中批量导出所有作业或链接脚本
  11. Glibc堆块的向前向后合并与unlink原理机制探究
  12. PTA寒假二
  13. idea 中解决maven 包冲突的问题(maven helper)
  14. Linux内核分析作业 NO.7
  15. 05: greenlet:轻量级的并发编程
  16. Ubuntu下配置PHP和CakePHP记录
  17. [转贴] VIM 常用快捷键 --一直记不住
  18. 杂项:node.js
  19. python kmeans实战 - 单机一层聚类(小玩具哦),下次再弄个分布式多次聚类
  20. hdu5141 线段树

热门文章

  1. 1.3创建项目「深入浅出ASP.NET Core系列」
  2. javascript 倒计数功能
  3. CSS超出省略号样式
  4. Java多线程小总结
  5. SpringCloud Alibaba-nacos注册中心
  6. Java实现&quot;命令式&quot;简易文本编辑器原型
  7. Handler,Looper,MessageQueue流程梳理
  8. 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署
  9. git错误--ssh: Could not resolve hostname ssh.github.com: Name or service not known--解决方式
  10. C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径