下,得到如图4d所示的更新二叉树。
[0067]进一步的,作为对图1及图3所示方法的实现,本发明实施例还提供了一种遍历计时器的装置。该装置位于服务器中,或者独立于服务器但是与服务器之间建立有数据交互关系。如图5所示,该装置包括:构建单元51、遍历单元52以及处理单元53。其中,
[0068]构建单元51,用于构建计时器二叉树,计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点;
[0069]遍历单元52,用于从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;
[0070]处理单元53,用于关闭目标节点对应的计时器。
[0071]进一步的,构建单元51用于:
[0072]当新增计时器时,从根节点开始进行遍历;
[0073]若新增节点的节点数值小于当前节点的节点数值,则向左继续遍历;
[0074]若新增节点的节点数值大于当前节点的节点数值,则向右继续遍历;
[0075]当遍历到最后一级节点时,增加新增节点;
[0076]若新增节点的节点数值等于当前节点的节点数值,则将当前节点确定为新增计时器的节点。
[0077]进一步的,遍历单元52用于:
[0078]当当前节点的节点数值小于等于当前时刻值时,将当前节点以及当前节点左侧分支的所有下级节点,确定为目标节点;
[0079]继续遍历当前节点右侧分支的下级节点。
[0080]进一步的,遍历单元52用于:
[0081]当当前节点的节点数值大于当前时刻值时,继续遍历当前节点左侧分支的下级节点。
[0082]进一步的,如图6所示,处理单元53,包括:
[0083]获取模块531,用于获取目标节点的节点标识;
[0084]第一查找模块532,用于查找对应节点标识的计时器标识;
[0085]第二查找模块533,用于根据计时器标识查找待关闭的计时器;
[0086]任务终止模块534,用于终止待关闭计时器的线程任务。
[0087]进一步的,构建单元51用于:
[0088]在关闭目标节点对应的计时器之后,删除被关闭计时器对应的节点;
[0089 ]根据节点数值的大小,对被关闭计时器对应的节点右侧分支的下级节点重新进行排序。
[0090]本发明实施例提供的遍历计时器的装置,能够根据计时器到时时刻值的大小构建计时器二叉树,其中,节点数值大于父节点数值的子节点为父节点的右子节点,节点数值小于父节点数值的子节点为父节点的左子节点。在遍历计时器时,通过对计时器二叉树的遍历查找到时的计时器。本发明实施例中,计时器二叉树根据节点数值的大小构建左右分支,当遍历到计时器到时的节点时,可以将该节点左侧分支的所有下级节点全部确定为目标节点,而无需继续对这些节点依次进行遍历。与现有技术相比,本发明实施例能够大大减少计时器的遍历次数,提高计时器的遍历效率,节省服务器的处理资源。
[0091]本发明的实施例公开了:
[0092]Al、一种遍历计时器的方法,其特征在于,所述方法包括:
[0093]构建计时器二叉树,所述计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为所述父节点的右子节点,节点数值小于父节点数值的子节点为所述父节点的左子节点;
[0094]从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点;
[0095]关闭所述目标节点对应的计时器。
[0096]A2、根据Al所述的方法,其特征在于,所述构建计时器二叉树,包括:
[0097]当新增计时器时,从所述根节点开始进行遍历;
[0098]若新增节点的节点数值小于当前节点的节点数值,则向左继续遍历;
[0099]若新增节点的节点数值大于当前节点的节点数值,则向右继续遍历;
[0100]当遍历到最后一级节点时,增加所述新增节点;
[0101]若新增节点的节点数值等于当前节点的节点数值,则将所述当前节点确定为所述新增计时器的节点。
[0102]A3、根据AI所述的方法,其特征在于,所述从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点,包括:
[0103]若当前节点的节点数值小于等于所述当前时刻值,则将所述当前节点以及所述当前节点左侧分支的所有下级节点,确定为所述目标节点;
[0104]继续遍历所述当前节点右侧分支的下级节点。
[0105]A4、根据A3所述的方法,其特征在于,所述从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节点,包括:
[0106]若当前节点的节点数值大于所述当前时刻值,则继续遍历所述当前节点左侧分支的下级节点。
[0107]A5、根据Al所述的方法,其特征在于,所述关闭所述目标节点对应的计时器,包括:
[0108]获取所述目标节点的节点标识;
[0109]查找对应所述节点标识的计时器标识;
[0110]根据所述计时器标识查找待关闭的计时器;
[0111]终止待关闭计时器的线程任务。
[0112]A6、根据Al至5中任一项所述的方法,其特征在于,在所述关闭所述目标节点对应的计时器之后,所述方法进一步包括:
[0113]删除被关闭计时器对应的节点;
[0114]根据节点数值的大小,对被关闭计时器对应的节点右侧分支的下级节点重新进行排序。
[0115]B7、一种遍历计时器的装置,其特征在于,所述装置包括:
[0116]构建单元,用于构建计时器二叉树,所述计时器二叉树的节点数值为计时器的到时时刻值,节点数值大于父节点数值的子节点为所述父节点的右子节点,节点数值小于父节点数值的子节点为所述父节点的左子节点;
[0117]遍历单元,用于从根节点开始遍历,查找节点数值小于等于当前时刻值的目标节占.V,
[0118]处理单元,用于关闭所述目标节点对应的计时器。
[0119]B8、根据B7所述的装置,其特征在于,所述构建单元用于:
[0120]当新增计时器时,从所述根节点开始进行遍历;
[0121]若新增节点的节点数值小于当前节点的节点数值,则向左继续遍历;
[0122]若新增节点的节点数值大于当前节点的节点数值,则向右继续遍历;
[0123]当遍历到最后一级节点时,增加所述新增节点;
[0124]若新增节点的节点数值等于当前节点的节点数值,则将所述当前节点确定为所述新增计时器的节点。
[0125]B9、根据B7所述的装置,其特征在于,所述遍历单元用于:
[0126]当当前节点的节点数值小于等于所述当前时刻值时,将所述当前节点以及所述当前节点左侧分支的所有下级节点,确定为所述目标节点;
[0127]继续遍历所述当前节点右侧分支的下级节点。
[0128]BlO、根据B9所述的装置,其特征在于,所述遍历单元用于:
[0129]当当前节点的节点数值大于所述当前时刻值时,继续遍历所述当前节点左侧分支的下级节点。
[0130]BI 1、根据B7所述的装置,其特征在于,所述处理单元,包括:
[0131 ]获取模块,用于获取所述目标节点的节点标识;
[0132]第一查找模块,用于查找对应所述节点标识的计时器标识;
[0133]第二查找模块,用于根据所述计时器标识查找待关闭的计时器;
[0134]任务终止模块,用于终止待关闭计时器的线程任务。
[0135]B12、根据B7至11中任一项所述的装置,其特征在于,所述构建单元用于:
[0136]在关闭所述目标节点对应的计时器之后,删除被关闭计时器对应的节点;
[0137]根据节点数值的大小,对被关闭计时器对应的节点右侧分支的下级节点重新进行排序。
[0138]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详