最近在做一个自己的小项目,用到了定时调度(Timer和TimeTask类),特做此记录

Timer类:

Timer类是一种线程设施,可以用来实现在某一个时间或某一段时间后,安排某一个任务执行一次,或定期重复执行。该功能要与TimerTask配合使用。TimerTask类用来实现由Timer安排的一次或重复执行的某一个任务。

TimeTask类:

用来执行具体的任务。

注:每一个Timer对象对应的是一个线程,因此计时器所执行的任务应该迅速完成,否则可能会延迟后续任务的执行,而这些后续的任务就有可能堆在一起,等到该任务完成后才能快速连续执行。

Timer类中的常用方法:

public Timer()    用来创建一个计时器并启动该计时器

public void cancel()

用来终止该计时器,并放弃所有已安排的任务,对当前正在执行的任务没有影响

public void schedule(TimerTask task, Date time)

安排一个任务在指定的时间执行,如果已经超过该时间,则立即执行

public void schedule(TimerTask task, Date firstTime, long period)

安排一个任务在指定的时间执行,之后以固定的频率(单位:毫秒)重复执行

public void schedule(TimerTask task, long delay)

安排一个任务在一段时间(单位:毫秒)后执行。

public void schedule(TimerTask task, long delay)
安排一个任务在一段时间(单位:毫秒)后执行。
public void schedule(TimerTask task,long delay,long period)

安排一个任务在一段时间(单位:毫秒)后执行,之后以固定的频率(单位:毫秒)重复执行

public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

安排一个任务在指定的时间执行,之后以近似固定的频率(单位:毫秒)重复执行

public void scheduleAtFixedRate(TimerTask task, long delay,long period)
安排一个任务在一段时间(单位:毫秒)后执行,之后以近似固定的频率(单位:毫秒)重复执行

TimeTask类中的常用方法:

public void cancel()

用来终止此任务,如果该任务只执行一次且还没有执行,则永远不会再执行,如果为重复执行任务,则之后不会再执行(如果任务正在执行,则执行完后不会再执行)。

public void run()

该任务所要执行的具体操作,该方法为引入的接口Runnable中的方法,子类需要覆写此方法。

public long scheduledExecutionTime()

返回最近一次要执行该任务的时间(如果正在执行,则返回此任务的执行安排时间),一般在run()方法中调用,用来判断当前是否有足够的时间来执行完成该任务。

注:

schedule()与scheduleAtFixedRate()方法的区别

schedule()方法的执行时间间隔永远是固定的,如果之前出现了延迟的情况,之后也会继续按照设定好的的间隔时间来执行

scheduleAtFixedRate()方法可以根据出现的延迟时间自动调整下一次间隔的执行时间

例1:定时执行任务

package com.test;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimerTask;public class MyTask extends TimerTask {@Overridepublic void run() {SimpleDateFormat sdf = null;sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS",Locale.CHINA);System.out.println("当前时间为"+sdf.format(new Date()));}
}
package com.test;import java.util.Timer;public class Test {public static void main(String[] args) {Timer timer = new Timer();MyTask myTask = new MyTask();//timer.schedule(myTask, 1000, 1000);timer.scheduleAtFixedRate(myTask, 1000, 1000);}
}

timer.schedule(myTask, 1000, 1000)输出结果:

timer.scheduleAtFixedRate(myTask, 1000, 1000)输出结果:

对比此两结果,就能很好的分析出scheduleAtFixedRate更适合做固定频率方面的工作

例2、秒表计时器

Timer和TimeTask类(定时调度)学习之秒表计时器相关推荐

  1. [19/04/12-星期五] 多线程_任务定时调度(Timer、Timetask和QUARTZ)

    一.Timer和Timetask 通过Timer和Timetask,我们可以实现定时启动某个线程. java.util.Timer 在这种实现方式中,Timer类作用是类似闹钟的功能,也就是定时或者每 ...

  2. 11.17定时调度(血干JAVA系类)

    定时调度 11.17.1 Timer 类 11.17.2 TimerTask 类 11.17.3范例--定时操作 [例11.52]建立TimerTask的子类 [例11.53]建立测试类,进行任务调度 ...

  3. 定时调度系列之Quartz.Net详解

    一. 背景 我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "."每天的0点需要统计前一天的考勤记录"."每个月 ...

  4. java Timer定时器管理类

    1.java timer类,定时器类.启动执行定时任务方法是timer.schedule(new RemindTask(), seconds*1000);俩参数分别是TimerTask子类,具体执行定 ...

  5. java的知识点34——任务定时调度(多线程)

    任务定时调度(多线程) 通过Timer 和Timertask,可以定时启动某个线程 java.util.Timer  :类似闹钟的功能,本身实现的就是一个线程 java.util.TimerTask: ...

  6. java定时调度main方法_java相关:Spring中实现定时调度的几种方法

    java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...

  7. SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调度.系统的监控处理,实际上这些操 作都可以通过 SpringBoot 进行整合操作.2.1.SpringBoot 整合邮件服 ...

  8. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  9. Timer 定时器相关类

    为什么80%的码农都做不了架构师?>>>    Timer相关类 定时执行相关类,包括java.util.Timer,以及TimerTask.还有内部类TaskQueue.Timer ...

最新文章

  1. 域名买了,DNS解析怎么选?一键按需定制解析服务不是梦!
  2. 鼠标坏了你别扔,可以修的
  3. linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
  4. python高阶函数心得体会_Python高阶函数使用总结
  5. 如何使用Avira Rescue CD清洁感染的PC
  6. MFC和GTK的区别
  7. JMeter性能测试中如何使用“用户参数”实现参数化
  8. spring mvc原理_SpringBoot:认认真真梳理一遍自动装配原理
  9. rdkit GetAtoms获取化合物每个位置的索引;rdkit FindMCS大公共相同结构 找不同化合物之间的差异
  10. php还原时间戳,如何将php时间戳转换回日期
  11. java 无锁并发_高并发情况下怎样尽量实现无锁编程
  12. #多个基因批量cox 多因素回归cox univariate Adjust for age sex单个基因cox 回归分析 多因素 矫正年龄性别之后的cox回归分析 矫正年龄性别之后的cox生存分析
  13. 动易2006CMSSP3+动网论坛 DVBBS 7.1 SP1+Oblog 3.13绿色整合版
  14. ZenTao不支持Win8.1问题解决
  15. 全国宣传思想工作会议 讲话_会议一周后,我的思想得到了满足
  16. laravel 邮件发送
  17. Windows安装Visual Studio Installer卡在正在验证 循环正在下载不安装,解决办法之服务问题
  18. UI设计中个人页面设计攻略
  19. 小生谈字符串的截取函数SubString()--仅限csharp语言
  20. 小程序列表页分页获取数据,下滑加载更多

热门文章

  1. 并且, ||或 , 的用法 ,区别
  2. 倍压电路详解-以六倍压为例
  3. matlab筛选不及格,matlab 学生成绩60不及格 60~69及格 70~79中等 80~89良好 90优秀...
  4. 多场景业务实战--竞品监控(总结有点多!!!) (干货!!)
  5. 2021再看Deno
  6. 轻松一招,解决go语言科学计数法导致交易数据掐尖的问题
  7. 十年资深马拉松跑者心脏骤停,跑马需当“心”
  8. 我们如何用Lity进行创新
  9. 社区团购这条路上,美团、拼多多必有一战?
  10. 亚马逊新规出台,外贸建站时代呼之欲出!