[发明专利]在Java虚拟机中提供相对定时的方法及装置在审
申请号: | 201410079776.7 | 申请日: | 2014-03-05 |
公开(公告)号: | CN103823711A | 公开(公告)日: | 2014-05-28 |
发明(设计)人: | 童志刚 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | java 虚拟机 提供 相对 定时 方法 装置 | ||
技术领域
本发明涉及计算机技术,尤其涉及一种在Java虚拟机中提供相对定时的方法及装置。
背景技术
定时器可以用来处理定时任务。定时器可分为绝对定时器和相对定时器,其中,绝对定时器基于时间点执行定时任务,相对定时器基于时间间隔执行定时任务。在实际应用中,相对定时器的应用更为频繁、广泛。
在现有技术中,通常通过java.util.ScheduledThreadPoolExecutor或者java.lang.Timer类库中的函数调用C语言的pthread_cond_timedwait函数,实现Java虚拟机中的相对定时功能。
然而现有技术中,一旦更改Java虚拟机的操作系统时间,Java虚拟机中的相对定时功能就会失效,从而导致定时任务被提前执行、被延迟执行或者被重复执行。
发明内容
本发明实施例提供一种在Java虚拟机中提供相对定时的方法及装置,以克服一旦更改Java虚拟机的操作系统时间,Java虚拟机中的相对定时功能就会失效的技术问题。
本发明的第一方面是提供一种在Java虚拟机中提供相对定时的方法,包括:
确定Java虚拟机的操作系统时间是否发生变更;
若所述Java虚拟机的操作系统时间发生变更,则修改所述Java虚拟机中定时任务的执行时间。
结合第一方面,在第一种可实现的方式中,所述确定Java虚拟机的操作系统时间是否发生变更,包括:
根据预设的探测周期,周期性地获取Java虚拟机的操作系统时间;
确定当前周期获取的操作系统时间与前一周期获取的操作系统时间的差值;
根据所述差值,确定所述Java虚拟机的操作系统时间是否发生变更。
结合第一方面的第一种可实现的方式,在第二种可实现的方式中,所述根据所述差值,确定所述Java虚拟机的操作系统时间是否发生变更,包括:
若所述差值的绝对值大于预设的敏感时间,则确定所述Java虚拟机的操作系统时间发生变更,否则确定所述Java虚拟机的操作系统时间未发生变更。
结合第一方面的第一种可实现的方式,在第三种可实现的方式中,所述根据所述差值,确定所述Java虚拟机的操作系统时间是否发生变更,包括:
若所述差值的绝对值不等于所述探测周期,则确定所述Java虚拟机的操作系统时间发生变更,否则确定所述Java虚拟机的操作系统时间未发生变更。
结合第一方面的第一种可实现的方式至结合第一方面的第三种可实现的方式中任一种可实现的方式,在第四种可实现的方式中,所述若所述Java虚拟机的操作系统时间发生变更,则修改所述Java虚拟机中定时任务的执行时间,包括:
根据所述差值,确定所述Java虚拟机中定时任务的执行时间修正值;
根据所述执行时间修正值以及修改前获得的所述Java虚拟机中定时任务的执行时间,修改所述Java虚拟机中定时任务的执行时间。
结合第一方面的第四种可实现方式,在第五种可实现方式中,所述根据所述差值,确定所述Java虚拟机中定时任务的执行时间修正值,包括:
根据公式A-(B+C)确定所述执行时间修正值,其中,A为当前周期获取的操作系统时间、B为前一周期获取的操作系统时间、C为所述探测周期。
本发明的第二方面是提供一种在Java虚拟机中提供相对定时的装置,包括:
确定模块,用于确定Java虚拟机的操作系统时间是否发生变更;
修改模块,用于若所述Java虚拟机的操作系统时间发生变更,则修改所述Java虚拟机中定时任务的执行时间。
结合第二方面,在第一种可实现的方式中,所述确定模块,具体用于:
根据预设的探测周期,周期性地采集Java虚拟机的操作系统时间;
确定当前周期获取的操作系统时间与前一周期获取的操作系统时间的差值;
根据所述差值,确定所述Java虚拟机的操作系统时间是否发生变更。
结合第二方面的第一种可实现的方式,在第二种可实现的方式中,所述确定模块,具体用于:
若所述差值的绝对值大于预设的敏感时间,则确定所述Java虚拟机的操作系统时间发生变更,否则确定所述Java虚拟机的操作系统时间未发生变更。
结合第二方面的第一种可实现的方式,在第三种可实现的方式中,所述确定模块,具体用于:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410079776.7/2.html,转载请声明来源钻瓜专利网。