Java中的定时器Timer详解
【Java中的定时器Timer详解】Java中的定时器Timer详解,博智网带你了解详细信息 。
目录
- 总结
简单来说,定时器就相当于一个“闹钟”,给定时器设定一个任务,约定这个任务在xxx时间之后执行~
Timer类提供了一个核心接口,schedule(安排)指定一个任务交给定时器,在一定时间之后再去执行这个任务~
如何实现定时器的效果~
- Timer中要包含一个Task类,每个Task就表示一个具体的任务实例,Task里面包含一个时间戳(啥时候执行这个任务),还包含一个Runnable实例(用来表示任务具体是啥) 。
- Timer里面通过一个带优先级的阻塞队列,来组织如干个task 。
- 这里的优先级是按照时间的先后来排优先级,快要到时间的任务优先级更高 。
- 也就是 给 堆 加上 wait/notify,让它能够带阻塞效果 。
- 标准库里提供这样的队列PriorityBlockingQueue
- Timer 中还需要一个专门的线程,让这个线程不停的扫描队首元素,看看队首元素是不是已经可以执行了,如果可以执行了,就执行,反之继续在队列中等待 。
一般去设定时间的时候,传入的时间,都是一个时间间隔
例如:传入1000,就代表从当前开始过1000ms之后在执行;
而我这里为了后面代码方便判断,在这里记录一下绝对时间,这样this.time里就是一个标志的ms级时间戳了,后续只需要获取当前时间戳在和这里的time对比一下就好了 。








这里补充一下Timer原生类中的一些方法
- schedule(TimerTask task, Date time)在指定的日期执行一次TimerTask任务;如果日期time早于当前时间,则立刻执行 。
- schedule(TimerTask task, long delay, long period)以当前时间为基准,延迟指定的毫秒后,再按指定的时间间隔地无限次数的执行TimerTask任务 。
- schedule(TimerTask task, Date firstTime, long period)在指定的日期之后,按指定的时间间隔地无限次数的执行TimerTask任务 。
- scheduleAtFixedRate(TimerTask task, long delay, long period)以当前时间为基准,延迟指定的毫秒后,再按指定的时间间隔周期性地无限次数的执行TimerTask任务 。
总结本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注趣讯吧的更多内容!
推荐阅读
- masque化妆品中的意思
- cdr中的剪切蒙版要怎么进行用
- 聚二甲基硅氧烷在护肤品中的作用
- 可转债发行条件
- PS中的图层应该如何锁定
- 黑糖姜茶不适宜人群
- 古代六艺中的御是指什么
- 妖琴师怎么自动拉人
- 全民超神游戏中的金币有什么用
- 13幺是什么意思
