Java定时器Timer
在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务。Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类。下面通过实例说一说,如何实现指定时间执行任务以及实现指定周期执行任务。
在指定时间执行
方法schedule(TimerTask,Date time),该方法的作用是在指定的日期执行一次某一任务。
执行任务类MyTask

public class MyTask extends TimerTask{@Overridepublic void run() {System.out.println("任务执行了,时间为:" + new Date());System.gc();    //  回收Timerthis.cancel();   //结束当前线程
    }
}

场景1:执行任务晚于当前时间--延迟执行

public class Test {public static void main(String[] args) {System.out.println("当前时间为:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,5);Date runDate = calen.getTime();MyTask task = new MyTask();Timer timer = new Timer();timer.schedule(task,runDate);}
}

执行结果:

Connected to the target VM, address: '127.0.0.1:63242', transport: 'socket'

当前时间为:Wed Nov 14 17:19:53 CST 2018
任务执行了,时间为:Wed Nov 14 17:19:58 CST 2018
Disconnected from the target VM, address: '127.0.0.1:63242', transport: 'socket'
Process finished with exit code 0
场景2:执行任务的时间早于当前时间--立即执行
public class Test1 {public static void main(String[] args) {System.out.println("当前时间为:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,-10);Date runDate = calen.getTime();MyTask task = new MyTask();Timer timer = new Timer();timer.schedule(task,runDate);}
}

执行结果:
Connected to the target VM, address: '127.0.0.1:63249', transport: 'socket'
当前时间为:Wed Nov 14 17:20:58 CST 2018
任务执行了,时间为:Wed Nov 14 17:20:58 CST 2018
Disconnected from the target VM, address: '127.0.0.1:63249', transport: 'socket'
Process finished with exit code 0
场景3:Timer中允许有多个TimerTask
public class Test2 {public static void main(String[] args) {System.out.println("当前时间为:" + new Date());Calendar calen1 = Calendar.getInstance();calen1.add(Calendar.SECOND,5);Date runDate1 = calen1.getTime();MyTask task1 = new MyTask();Calendar calen2 = Calendar.getInstance();calen2.add(Calendar.SECOND,-10);Date runDate2 = calen2.getTime();MyTask task2 = new MyTask();Timer timer = new Timer();timer.schedule(task1,runDate1);timer.schedule(task2,runDate2);}
}

执行结果:
Connected to the target VM, address: '127.0.0.1:63292', transport: 'socket'
当前时间为:Wed Nov 14 17:23:02 CST 2018
任务执行了,时间为:Wed Nov 14 17:23:02 CST 2018
任务执行了,时间为:Wed Nov 14 17:23:07 CST 2018
Disconnected from the target VM, address: '127.0.0.1:63292', transport: 'socket'
Process finished with exit code 0

周期性执行

方法schedule(TimerTask,Date firstTime,long period),改方法的作用是在指定的日期之后按指定的时间间隔周期,无线循环地执行某一任务。
执行类:MyTask1
public class MyTask1 extends TimerTask{@Overridepublic void run() {System.out.println("任务执行了,时间为:" + new Date());}
}

测试类:Test3
public class Test3 {public static void main(String[] args) {System.out.println("当前时间为:" + new Date());Calendar calen = Calendar.getInstance();calen.add(Calendar.SECOND,5);Date runDate = calen.getTime();MyTask1 task = new MyTask1();Timer timer = new Timer();timer.schedule(task,runDate,4000);}
}

执行结果:
Connected to the target VM, address: '127.0.0.1:63382', transport: 'socket'
当前时间为:Wed Nov 14 17:35:36 CST 2018
任务执行了,时间为:Wed Nov 14 17:35:41 CST 2018
任务执行了,时间为:Wed Nov 14 17:35:45 CST 2018
任务执行了,时间为:Wed Nov 14 17:35:49 CST 2018
任务执行了,时间为:Wed Nov 14 17:35:53 CST 2018
任务执行了,时间为:Wed Nov 14 17:35:57 CST 2018
注意:
1)TimerTask类中的cancel()方法的做事是将自身从任务队列中进行清除
2)Timer类中的cancel()方法的作用是将任务队列中的全部任务进行清空。

转载于:https://www.cnblogs.com/myxcf/p/9959589.html

Java定时器Timer相关推荐

  1. Java定时器Timer学习之一

    2019独角兽企业重金招聘Python工程师标准>>> 种类: 接通延时型定时器:接通延时型定时器是各种PLC(可编程控制器)中最常见最基本的定时器,这种定时器在Siemens的PL ...

  2. Java 定时器 Timer 原理解析

    java.util.Timer 是 Java 中的一个实用类,它可以用来安排在未来某个时间执行的任务,或者定期执行任务.它内部包含一个任务队列,用于存储要执行的 TimerTask.通过 schedu ...

  3. Java定时器Timer和第三方定时器Quartz

    概述 定时器在应用广泛,比如定时统计数据生成报表.每隔设定的时间提醒用户等.Java.util包自带的定时器Timer提供简单的定点执行功能,而Quartz是一个第三方提供的定时器框架. 对比 Tim ...

  4. java定时器timer配置_java定时器配置解析

    定时器是java的一大特色,本篇文章我们会了解定时器的配置有哪些方式,下面就跟小编一起看看吧. 实例package com.wxltsoft.tool; import org.junit.Test; ...

  5. java timer记录运行时间_有关java定时器Timer的疑问,当执行时间大于间隔时间会怎样?...

    这个问题,我正好以前研究过 先回答你的问题:是等待第一次任务执行完 然后细说: 如果你用的是 java.util.Timer,那么这个Timer 有两种执行模式: fixed-rate:对应于 sch ...

  6. java定时器-Timer和TimerTask详解

    1.例子入手 package pers.growing.test;import java.util.Timer; import java.util.TimerTask;public class Mai ...

  7. Java 定时器Timer

    简介 Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务. 利用Timer可以安排任务"执行一次"或者定期"执行多次& ...

  8. java定时器timer_Java定时器Timer

    Java定时器Timer 在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类,执行计划 ...

  9. java的定时器是什么_java定时器timer是什么?该如何实现?

    小伙伴们知道java定时器timer吗?本篇文章小编就来带大家了解一下它的概念及实现方法. 通俗的说,我们可以将Timer当成是一种工具,线程会用它安排以后在后台线程中执行的任务.嫩够安排任务执行一次 ...

最新文章

  1. 单片机c语言编程300例_趣味c语言编程100例(四)
  2. IT小小鸟VS.小小小鸟:展翅,我们一起翱翔!
  3. retinaface 训练笔记
  4. python【蓝桥杯vip练习题库】ADV-150 周期字串
  5. linux 自动备份脚本
  6. JavaScript 技术篇-textContent获取dom节点text文本内容带空格,js获取带空格的dom节点内容
  7. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
  8. Java 多态之“绑定”
  9. Session的实现与存储
  10. java string转jsonobject_超赞!终于有网友用Java实现了第三方qq账号登录
  11. Scrapy框架学习笔记:猫眼爬虫
  12. window7 64位 myeclipse9.0破解步骤
  13. vue-transition过渡动画
  14. idea2020版Maven依赖成功导入但仍然报错找不到包解决
  15. 爬虫抓包问题全面分析
  16. win10服务器怎么备份系统,详细教你win10怎么备份系统
  17. [OSGI] Felix基本环境搭建及操作
  18. 加载调用本地百度地图资源,附地图下载器及黑龙江省1-16级瓦片地图,加载显示marker
  19. 《上海市优质中小企业梯度培育管理实施细则》的通知
  20. 【LinuxCNC开发序列教程二】Ethercat主站终端调试

热门文章

  1. Graph Search就是语义搜索
  2. Android视图状态及重绘流程分析,带你一步步深入了解View(三)
  3. JavaScript 判断 DOM 何时加载完毕
  4. mvc与三层结构终极区别
  5. go中的database/sql接口
  6. linux经典书籍--Linux系统编程
  7. 七月在线数据结构视频教程一
  8. golang中的strings.Trim
  9. extern“C”有什么作用
  10. socket什么情况下可读