专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

java定时器怎么设置时间(java定时器实现方式有几种)

来源:小嗨整编  作者:小嗨  发布时间:2023-02-07 06:50
摘要:java定时器怎么设置时间,java定时器实现方式有几种,定时器相信大家都不陌生,平时使用定时器就像使用闹钟一样,今天就来分析一下java中自带的定时任务器Timer。...

(4)schedule(task,delay,period)

在delay时间之后,开始首次执行task,之后每隔period毫秒重复执行一次task ,这个delay和上面的一样。

我们不如来看看源码:

java定时器怎么设置时间(java定时器实现方式有几种)

这四个方法都执行了同一个方法sched,所以我们要弄清楚原理,就必须要再跟进去看看:

java定时器怎么设置时间(java定时器实现方式有几种)

上面的代码我们来分析一下,最上面的if就是排除一下异常情况,最核心的就是synchronized里面的代码。首先将任务添加到队列中,然后根据nextExecutionTime调整队列。

添加任务add(task):

java定时器怎么设置时间(java定时器实现方式有几种)

维护最小堆:

java定时器怎么设置时间(java定时器实现方式有几种)

上面就是Timer中如何执行的定时任务核心,但是还有一个方法,也是执行定时任务的。叫scheduleAtFixedRate

下面我们来分析一下,然后比较和上面的不同。

4、scheduleAtFixedRate方法

这个方法有两个:

(1)scheduleAtFixedRate(task, time, period)

在时间等于或超过time的时候首次执行task,之后每隔period毫秒重复执行一次task 。这个time表示的是例如2019年11月11日上午11点11分11秒。指的是时刻。

(2)scheduleAtFixedRate(task, delay, period)

在delay时间之后,开始首次执行task,之后每隔period毫秒重复执行一次task ,这个delay表示的是延迟时间,比如说三秒后执行。

既然上面都已经有了4个定时器,为什么这里还要再增加几个呢?我们来分析一下他们的区别:

分两种情况: ① 首次计划执行的时间 schedule:如果第一次执行时间被delay了,随后的执行时间按照上一次实际执行完的时间点进行计算 。scheduleAtFixedRate:如果第一次执行时间被delay了,随后的执行时间按上一次开始的时间进行计算,并且为了赶上进度会多次执行任务,因此TimerTask中的执行体需要考虑同步。

②任务执行所需时间 schedule方法:下一次执行时间会不断延后,因此参照的是上一次执行完成的时间点。scheduleAtFixedRate方法:下一次执行时间不会延后,因此存在并发性。我们可以看一下图:

java定时器怎么设置时间(java定时器实现方式有几种)

5、其他方法

我们已经明白了如何创建Timer和执行定时任务,如果在执行的时候我们突然改变主意,想要取消怎么办呢?这里Timer当然为我们提供了。

(1)cancel:取消此计时器任务。

(2)scheduledExecutionTime():返回此任务最近实际执行的安排执行时间。

6、任务调度

任务调度也就是说我们的线程如何去执行这些任务。其实在TimerThread调用了run来执行,我们看一下源码。

java定时器怎么设置时间(java定时器实现方式有几种)

也就是说其实真正执行任务调度的是mainLoop(),synchronized代码块只是为了确保在执行完之后能够移除这个task。

而这个mainLoop方法的思想很简单,就是拿出任务队列中的第一个任务,如果执行时间还没有到,则继续等待,否则立即执行。源码在这里就不再给出了。

三、Timer缺陷


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903047_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • PMC功能指令之定时器TMR(SUB3)

    PMC功能指令之定时器TMR(SUB3)

    操作方法01PMC是FANUC系统连接外围设备的一个工具,学会了真没技术对维修工作将会起到事半功倍的效果,当然,PMC程序是通过PMC功能指令和一些触点连接起来的,所以我们如果想学会看懂PMC程序,或...

  • js定时器与 延时器 的运用

    js定时器与 延时器 的运用

    操作方法01定时器延时器1)setTimeout();//n毫秒后执行一次2)setInterval();//每隔n秒执行一次setTimeout()对应的是clearTimeout(id)...

  • 迷你世界电路定时器制作详解 电路定时器制作教程

    迷你世界电路定时器制作详解 电路定时器制作教程

    迷你世界电路定时器制作教程是,把两个漏斗的口互相连通,在漏斗的两侧放上电能比较器,在两边的普通方块上连接上我们的推拉机械臂和蓝色电能线,推拉机械臂需要用扳手敲一下推拉距离,在两个机械臂中放入一块电石块,设置开关切换的时间就完成了。迷你世界电...

  • java定时器怎么设置时间(java定时器实现方式有几种)

    java定时器怎么设置时间(java定时器实现方式有几种)

    java定时器怎么设置时间,java定时器实现方式有几种,定时器相信大家都不陌生,平时使用定时器就像使用闹钟一样,今天就来分析一下java中自带的定时任务器Timer。...

  • 单片机定时器工作原理,51单片机定时器初值计算方式

    单片机定时器工作原理,51单片机定时器初值计算方式

    单片机定时器工作原理与,51单片机定时器初值计算方式,CPU时序的有关知识振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。机器周期:1个机器...

  • 周排行
  • 月排行
  • 年排行

精彩推荐