Timer定时器主要做定时任务或者按照一定的时间间隔做任务,例如每天4点钟定时执行作业等
Timer的特性
1、它属于单线程的,每创建个Timer实例,就会创建一个新线程
2、Timer默认情况下不是守护线程,可以设置为守护线程new Timer(true),守护线程再进程中没有其他线程时,守护线程将销毁
3、TimerTask是以队列的方式一个个的执行
4、TimerTask中的cancel()方法将自身中从队列中清除
5、Timer中的cancel()方法是将任务队列中的全部任务进行取消,有时并不一定停止任务,原因是Timer类中的cancel()方法有时并没有竞争到锁,
(这个可以从Timer源码中看到,TimerThread和TaskQueue两个内部类)
6、TimerTask中的run方法无法抛出,所以要进行try catch捕获,如果其中任何一个任务发生异常没有被捕获,则其他任务也将被终止
方法详解:
(1)schedule(TimerTask task, Date executeTime)
当executeTime<=currentTime时,task任务会在currentTimer立即执行
当executeTime>currentTime时,task会在未来的executeTime执行
(2)schedule(TimerTask task, Date firstTime, long period)
当firstTime <=currentTime时,task任务会在currentTimer立即执行,
当firstTime >currentTime时,task会在未来的executeTime执行,
执行任务所用的时间taskUsedTime<peroid,则下一个任务执行的时间是上次任务执行完成的时间+peroid,任务按时间间隔peroid周期性执行任务
执行任务所用的时间taskUsedTime>peroid,则下一个任务执行的时间是上次任务执行完成的时间+taskUsedTime,任务按时间间隔taskUsedTime 周期性执行任务
(3)schedule(TimerTask task, long delay)
任务延迟delay毫秒进行执行
(4)schedule(TimerTask task, long delay, long period)
A、延迟delay毫秒第一次执行,
B、执行任务所用的时间taskUsedTime<peroid,则下一个任务执行的时间是上次任务执行完成的时间+peroid, 任务按时间间隔peroid周期性执行任务
C、执行任务所用的时间taskUsedTime>peroid,则下一个任务执行的时间是上次任务执行完成的时间+taskUsedTime, 任务按时间间隔taskUsedTime 周期性执行任务
(5)scheduleAtFixedRate(TimerTask task, long delay, long period)
(6)scheduleAtFixedRate(TimerTask task, Date firstTime,  long period)
startTime = currentTime
A、当firstTime>currentTime,任务则在currentTime执行
B、当firstTime<currentTime,任务会发生追赶执行,追赶执行的次数expectCount=(currentTime-firstTime)/peroid+1;
第一个peroid属于追赶阶段,如果追赶上则等待执行startTime+peroid时间任务,如果没有追赶上则直接执行startTime+peroid时间的任务

Timer定时器详解相关推荐

  1. Jmeter性能测试工具Timer定时器详解

    jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,下面一一介绍: 一.定时器的作用域 1.定时器是在每个sa ...

  2. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  3. Java中的Timer和Timer Task详解

    Java Timer&TimerTask原理分析 如果你使用Java语言进行开发,对于定时执行任务这样的需求,自然而然会想到使用Timer和TimerTask完成任务,我最近就使用 Timer ...

  4. STM32 定时器详解

    STM32 定时器详解 吃了一个猛亏,自己理解花了大半天时间,结果一看代码发现巨简单 算了,把自己理解的放上来吧 目录 STM32 定时器详解 前言 一.定时器种类和区分 二.时钟源 三.计数过程 3 ...

  5. STM32基础定时器详解

    目录 01.定时器介绍 02.时钟源 03.时基单元 04.计数模式 4.1.向上计数模式 4.2.向下计数模式 4.3.中央对齐(向上/向下计数模式) 05.基础定时代码 定时器最基本的功能就是定时 ...

  6. STM32定时器详解——TIM详解

    TIM简介 1.TIM (Timer)定时器 2.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 3.16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz计数时4.钟下可以实 ...

  7. Linux应用层的定时器Timer使用详解【转】

    转自:http://blog.csdn.net/wwwtovvv/article/details/8601528 版权声明:本文为博主原创文章,未经博主允许不得转载. linux下定时器的使用 -- ...

  8. Linux timer调用流程图,Linux应用层的定时器Timer使用详解【转】

    linux下定时器的使用-- alarm() & setitimer(): 1.alarm ------------------------------------------- 如果不要求很 ...

  9. flutter Timer 延时器,定时器详解

    [flutter工具箱] Timer 概览 重要属性 主要用法 引用 延时 定时循环 取消定时器 官方api地址 概览 Timer是flutter自带的官方延时器工具,本篇研究一下Timer的用法. ...

最新文章

  1. android 瀑布流的实现(用recyclerview的实现的)
  2. 电脑技巧:如何彻底关闭电脑右下角闪烁弹窗广告?
  3. .net core EPPlus npoi_在.NET中隐藏带有只读Web路径的Web shell
  4. 如何借助ArrayAdapter和Spinner实现下拉列表
  5. python book.save_Python之操作excel
  6. Raki的读paper小记:Enhanced Language Representation with Label Knowledge for Span Extraction
  7. 中国科学院大学计算机学院夏令营,中科院计算所2019年夏令营名单
  8. Linux内核地址空间分布
  9. IC卡和ID卡初步了解
  10. Python数据分析师使用低代码Streamlit实现Web数据可视化方法——入门篇
  11. easyui progressbar ajax,jQuery EasyUI 教程-ProgressBar(进度条)
  12. css-盒子模型border-box
  13. VB编程:UBound获取数组上限;LBound获取数组下限-25
  14. 新版正方教务系统模拟登录登录密码RSA加密破解
  15. web百度离线地图开发(详细教程)2019
  16. 第127讲:Hadoop集群管理之安全模式解析及动手实战学习笔记
  17. 苹果Mac如何查看多张图片?
  18. 对计算机专业学生的忠告
  19. JS设计模式之代理模式-虚拟代理
  20. 拉伯证券|A股延续强势格局 北向资金开年以来净买入超1500亿元

热门文章

  1. 软件测试真的也干不到35岁吗?我还处在水深火热的测试岗...
  2. Code-server阿里云ECS服务器部署
  3. nachos学习笔记(一)
  4. 高德地图自己录制导航声音备份及恢复方法
  5. networkx的使用
  6. Arduino控制PCF8574
  7. 蓝桥杯单片机学习3——数码管静态显示
  8. scala中case class与一般的class的区别
  9. 如何连接两台电脑,实现两台电脑的共享
  10. php把字符串变为数组_php把字符串转为数组的方法