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

嗨游网
嗨游网

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

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

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

一、Timer基本使用

在Java中为我们提供了Timer来实现定时任务,当然现在还有很多定时任务框架,比如说Spring、QuartZ、Linux Cron等等,而且性能也更加优越。但是我们想要深入的学习就必须先从最简单的开始。

在Timer定时任务中,最主要涉及到了两个类:Timer和TimerTask。他们俩的关系也特别容易理解,TimerTask把我们得业务逻辑写好之后,然后使用Timer定时执行就OK了。我们来看一个最基本的案例:

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

这就是我们的TimerTask,我们单独写成类时候需要去继承TimerTask。然后呢我们写好了之后就可以使用Timer来执行了。

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

指定的流程很简单:

(1)第一步:创建一个Timer。

(2)第二步:创建一个TimerTask。

(3)第三步:使用Timer执行TimerTask。

其中第三步无疑是我们目前最关心的,也就是timer.schedule(myTask, 2000L, 1000L)。他的意思是myTask在两秒钟之后开始第一次执行,然后每隔一秒执行一次。这只是最基本的用法。就体现了Timer定时执行的流程。当然java中Timer还为我们提供了很多其他的方法。对此就有必要深入其源码看看了。

二、Timer源码分析

对于一个类的源码分析,我一贯的思路就是先从参数开始,然后构造方法,最后就是常用方法。下面我们就按照这个思路开始今天的源码分析,在这里基于jdk1.8。先给出一张整体类图:

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

1、参数

Timer的源码中为我们提供了两个最主要的参数TaskQueue和TimerThread

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

上面的代码大概意思是这样的:

(1)TaskQueue:这是一个最小堆,它存放该Timer的所有TimerTask。

(2)TimerThread:执行TaskQueue中的任务,执行完从任务队列中移除。

所以上面这两个参数其实是配合着使用的,那这个TaskQueue是如何存放的呢?在这里我们不妨跟进去看看。

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

在这里我们只给出了一部分源码,不过这一部分是整个思想原理最核心的,上面英文的大概意思是;TaskQueue是一个平衡二叉堆,具有最小 nextExecutionTime 的 TimerTask 在队列中为 queue[1] ,也就是堆中的根节点。第 n 个位置 queue[n] 的子节点分别在 queue[2n] 和 queue[2n+1] 。不了解二叉堆的话,可以看看数据结构。

也就是说TimerTask 在堆中的位置其实是通过nextExecutionTime 来决定的。nextExecutionTime 越小,那么在堆中的位置越靠近根,越有可能先被执行。而nextExecutionTime意思就是下一次执行开始的时间。

还有一个TimerTask数组,默认大小是128个。

2、构造方法

构造方法就比较简单了,这里一共有四个:

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

(1)第一个:默认构造方法。

(2)第二个:在构造器中指定是否是守护线程。

(3)第三个:带有名字的构造方法。

(3)第四个:不仅带名字,还指定是否是守护线程。

不过我们需要注意一点的是,Timer在构造完成之后会启动一个后台线程用于执行TaskQueue里面的TimerTask 。

3、定时任务方法

在一开始我们提到,我们不仅可以在指定的时间执行某些任务,还可以在一段时间之后执行。我们对这些方法进行总结一下:

(1)schedule(task,time) 在时间等于或超过time的时候执行且只执行一次task,这个time表示的是例如2019年11月11日上午11点11分11秒。指的是时刻。

(2)schedule(task,time,period)

在时间等于或超过time的时候首次执行task,之后每隔period毫秒重复执行一次task 。这个time和上一个一样。

(3)schedule(task, delay)

在delay时间之后,执行且只执行一次task。这个delay表示的是延迟时间,比如说三秒后执行。


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903047.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个机器...

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

精彩推荐