在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了。定时器的实现方式有很多种,今天总结最简单的实现方式。java 1.3引入了定时器框架,用于在定时器上下文中控制线程的执行,其由类Timer和TimerTask构成。Timer适用于大规模并发调度定时任务,在内部,该类使用二进制的堆表示其定时任务队列。

通过继承TimerTask或者创建匿名类的方式重写run()方法,创建一个定时任务,通过将其作为第一个参数调用Timer得schedule()方法,实现定时器。

import java.util.Timer;import java.util.TimerTask;public class TimerDemo {    // 通过创建匿名类方式实现

public static void main(String[] args) {

// 首先初始化一个TimerTask的匿名子类

TimerTask task = new TimerTask() {

@Override            public void run() {

System.out.println("开始执行");                //退出程序返回最上层,0表示正常退出程序,非0表示非正常退出程序

System.exit(0);

}

};        //通过Timer调用

Timer timer = new Timer();

timer.schedule(task, 2000);

}

}

Timer创建的定时器一般为非线程守护,如果想要创建守护线程需调用Timer(boolean isDaemon) 传递参数true给isDaemon。

Timer类声明的方法如下:void schedule(TimerTask task, long delay) 在delay毫秒之后调度任务执行。

void schedule(TimerTask task, Date time) 在某个时间点调度任务执行。

void schedule(TimerTask task, long delay, long period) 在delay毫秒之后调度任务开始执行,以固定时间间隔的方式重复执行,后续将一大约period毫秒的固定时间间隔执行。

void schedule(TimerTask task, Date firstTime, long period) 调度任务于firstTime开始,以固定时间间隔的方式重复执行,后续将一大约period毫秒的固定时间间隔执行。

void scheduleAtFixedRate(TimerTask task, long delay, long period) 在delay毫秒之后,开始调度任务以固定速率的方式重复执行,后续将以大约period毫秒数的固定时间间隔执行。

void scheduleAtFixedRate(TimerTask task, Date firstTime,long period) 调度任务于firstTime开始,以固定速率的方式重复执行,后续将大约period毫秒数的固定时间间隔执行。

sched(TimerTask task, long time, long period) 在指定时间执行调度任务执行,以固定时间间隔的方式重复执行,后续将一大约period毫秒的固定时间间隔执行。

void cancel() 终止定时器,丢弃所有当前调度的定时器任务。不干涉当前正在执行的任务,能保证正在执行的任务一定是最后一个被该定时器执行的任务。

int purge() 从该定时器队列中移除所有取消的定时任务并且返回被移除任务的数目。

定时任务都是抽象类TimerTask子类的实例,这些子类实现Runnable接口,当子类实例化TimerTask的时候,需要重写其voud run()方法。

TimerTask类声明的方法如下:boolean cancel()取消这个定时任务

long scheduledExecutionTime() 返回此定时任务最近实际被调度执行时间。

Timer的cancel()和TimerTask的TimerTask的区别在于,Timer的cancel()会终止定时器并放弃当前任意被调度的定时任务,而TimerTask的cancel()方法仅仅会取消正在调度的定时任务。

作者:巨蟹糖

原文链接:https://www.cnblogs.com/Sweethoney/p/10486483.html

java timertask 初始化_定时器实现方式之TimerTask、Timer相关推荐

  1. java数组 初始化_用Java初始化数组

    java数组 初始化 具有使用C或FORTRAN等语言进行编程的经验的人熟悉数组的概念. 它们基本上是一个连续的内存块,每个位置都是某种类型:整数,浮点数或您所拥有的. Java中的情况与此类似,但有 ...

  2. 定时器实现方式之TimerTask、Timer

    在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了.定时器的实现方式有很多种,今天总结最简单的实现方式.java 1.3引入了定时器框架,用于在定时器上下文中控制线程的 ...

  3. java arraylist 初始化_一不小心就让Java开发踩坑的fail-fast是个什么鬼?

    什么是fail-fast 首先我们看下维基百科中关于fail-fast的解释: In systems design, a fail-fast system is one which immediate ...

  4. java字典初始化_在Java中用一组特定的数据初始化字典

    我很好奇我如何更有效地实例化Java中的字典.目前我有可以通过的代码,但我用非常混淆的方式填充数据.在Java中用一组特定的数据初始化字典 有什么办法让我初始化我的字典吗?这是蟒蛇的记录: weste ...

  5. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  6. java final 初始化_[转]java static final 初始化

    1.static修饰(类变量)一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为privat ...

  7. java service 初始化_【Java】Nacos – NacosNamingService初始化

    Nacos – 启动提到了NacosWatch#start会获取NamingService,他托管NacosServiceManager来完成这件事. NacosServiceManager#getN ...

  8. java 虚拟机 初始化_【深入理解Java虚拟机】类的初始化过程

    类的初始化过程 类的加载过程.png 加载 将 Class 文件以二进制的形式加载到内存中 验证 校验 Class 文件是否安全,是否被正确的修改等 准备 为类变量申请内存,设置默认值,(初始化变量的 ...

  9. java excel生成_两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

最新文章

  1. ActiveMQ消息存储持久化
  2. usaco Mother's Milk
  3. 干货总结:SPI总线详细要点
  4. play框架配置 拦截器_如何使用Play框架为https配置SSL证书
  5. SSM框架中的前后端分离
  6. springboot秒杀课程学习整理1-1
  7. GitHub或正式登陆中国!拟在中国设立分公司
  8. TikTok最适合普通小白的赚钱方法?
  9. Coolite Toolkit学习笔记七:常用控件TreePanel
  10. 从WAVE头文件里获取压缩方式
  11. c语言partition头文件,c – dxvahd.h中的#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)何时成为true头文件...
  12. 交互媒体专题设计——技术预演与方案设计
  13. bzoj2037 创世纪
  14. 实现AlphaGo(二):快速构建棋盘和围棋规则
  15. 【PHP】\r \r\n \t是什么
  16. WIN7常用使用设置
  17. 智商一般学计算机,IQ最高的十大专业公布 智商不高慎选
  18. MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘
  19. GK110和GK104
  20. 初学安卓之二维码的简单实现,android开发网上购物app

热门文章

  1. ocaml-----hello world
  2. 工业级4G/5G多卡聚合路由器(应急通讯、车载通讯、视频传输)
  3. echars实现中国地图 省级自动切换
  4. 康佳电视显示服务器连接异常,康佳电视五大常见故障及解决方法
  5. Linux基础防火墙、KVM、zabbix具体配置
  6. c语言输出10000以内的阿姆斯特朗数
  7. 在c语言中 n的作用是什么,c语言中(n)的意思,C语言中‘#92;n#39;是什么意思
  8. Tryhackme-Malware Analysis
  9. Machine Learning for Encrypted Malware Traffic Classification Accounting for...阅读笔记
  10. 没在路边改过代码的程序员,不足以谈人生