本篇文章给大家分享的是有关什么是Timer,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
Timer类是Java提供线程用于定时任务调用的工具类。
Timer类是线程安全的。
Timer类使用二进制堆数据结构来存储任务。
Timer类构造函数
Timer():创建一个新的计时器
Timer(boolean isDaemon):创建一个新的计时器,可以指定其关联的线程作为守护程序运行
Timer(String name):创建一个新的计时器,其关联的线程具有指定的名称
Timer(String name,boolean isDaemon):创建一个新的计时器,其关联的线程具有指定的名称,并且可以指定作为守护程序运行
Timer类的方法
cancel():终止此计时器,丢弃当前计划的任何任务。不会干扰当前正在执行的任务(如果存在)。一旦计时器终止,它的执行线程就会正常终止,并且不再可以在其上安排任务。
purge(): 从此计时器的任务队列中删除所有已取消的任务。
schedule(TimerTask task, Date time):计划在指定时间执行的指定任务。其中task表示要安排的任务,time表示执行任务的时间。
schedule(TimerTask task, Date firstTime, long period):从指定的时间开始,为重复的固定延迟执行安排指定的任务。其中firstTime第一次执行任务的时间,period表示连续任务执行之间的时间(以毫秒为单位)
schedule(TimerTask task, long delay):在指定的延迟语法后调度指定的任务执行。其中delay表示执行任务前的延迟(以毫秒为单位)。
schedule(TimerTask task, long delay, long period):在指定的延迟语法后开始,为重复的固定延迟执行安排指定的任务。
scheduleAtFixedRate(TimerTask task,Date firstTime,long period):从指定时间开始,为重复的固定速率执行调度指定的任务。
scheduleAtFixedRate(TimerTask task, long delay, long period):在指定的延迟语法后开始,为重复的固定速率执行调度指定的任务。
schedule()和scheduleAtFixedRate()区别
相同点
1、方法schedule 和方法 scheduleAtFixedRate 都会按顺序执行,所以不用考虑非线程安全的情况。
2、方法schedule 和方法 scheduleAtFixedRate 如果执行任务的时间没有被延迟,那么下一次任务的执行时间参考的是上一次的任务的"开始"时的时间来计算的。
3、方法schedule 和方法 scheduleAtFixedRate 如果执行任务的时间被延迟了,那么下一次任务的执行时间参考的是上一次任务"结束"时的时间来计算。
不同点
schedule 和 scheduleAtFixedRate在使用上基本没什么差别,scheduleAtFixedRate 具有追赶执行性,如果任务在周期性运行过程中被打断了,scheduleAtFixedRate会尝试把之前落下的任务补上运行。而schedule就不管了,接着运行接下来的任务就行了。
如何理解schedule和scheduleAtFixedRate的案例
暑假到了老师给schedule和scheduleAtFixedRate两个同学布置作业,老师要求学生暑假每天写2页,30天后完成作业。这两个学生每天按时完成作业,直到第10天,出了意外,两个学生出去旅游花了5天时间,这5天时间里两个人都没有做作业。任务被拖延了。这时候两个学生采取的策略就不同了:
schedule重新安排了任务时间,旅游回来的第一天做第11天的任务,第二天做第12天的任务,最后完成任务花了35天。
scheduleAtFixedRate是个守时的学生,她总想按时完成老师的任务,于是在旅游回来的第一天把之前5天欠下的任务以及第16天当天的任务全部完成了,之后还是按照老师的原安排完成作业,最后完成任务花了30天。
以上就是什么是Timer,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。