[發(fā)明專利]在Java虛擬機(jī)中提供相對定時的方法及裝置在審
| 申請?zhí)枺?/td> | 201410079776.7 | 申請日: | 2014-03-05 |
| 公開(公告)號: | CN103823711A | 公開(公告)日: | 2014-05-28 |
| 發(fā)明(設(shè)計)人: | 童志剛 | 申請(專利權(quán))人: | 華為技術(shù)有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 北京同立鈞成知識產(chǎn)權(quán)代理有限公司 11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | java 虛擬機(jī) 提供 相對 定時 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)技術(shù),尤其涉及一種在Java虛擬機(jī)中提供相對定時的方法及裝置。
背景技術(shù)
定時器可以用來處理定時任務(wù)。定時器可分為絕對定時器和相對定時器,其中,絕對定時器基于時間點執(zhí)行定時任務(wù),相對定時器基于時間間隔執(zhí)行定時任務(wù)。在實際應(yīng)用中,相對定時器的應(yīng)用更為頻繁、廣泛。
在現(xiàn)有技術(shù)中,通常通過java.util.ScheduledThreadPoolExecutor或者java.lang.Timer類庫中的函數(shù)調(diào)用C語言的pthread_cond_timedwait函數(shù),實現(xiàn)Java虛擬機(jī)中的相對定時功能。
然而現(xiàn)有技術(shù)中,一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效,從而導(dǎo)致定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種在Java虛擬機(jī)中提供相對定時的方法及裝置,以克服一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效的技術(shù)問題。
本發(fā)明的第一方面是提供一種在Java虛擬機(jī)中提供相對定時的方法,包括:
確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更;
若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
結(jié)合第一方面,在第一種可實現(xiàn)的方式中,所述確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
根據(jù)預(yù)設(shè)的探測周期,周期性地獲取Java虛擬機(jī)的操作系統(tǒng)時間;
確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值;
根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
結(jié)合第一方面的第一種可實現(xiàn)的方式,在第二種可實現(xiàn)的方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
結(jié)合第一方面的第一種可實現(xiàn)的方式,在第三種可實現(xiàn)的方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
若所述差值的絕對值不等于所述探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
結(jié)合第一方面的第一種可實現(xiàn)的方式至結(jié)合第一方面的第三種可實現(xiàn)的方式中任一種可實現(xiàn)的方式,在第四種可實現(xiàn)的方式中,所述若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,包括:
根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值;
根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
結(jié)合第一方面的第四種可實現(xiàn)方式,在第五種可實現(xiàn)方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值,包括:
根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作系統(tǒng)時間、C為所述探測周期。
本發(fā)明的第二方面是提供一種在Java虛擬機(jī)中提供相對定時的裝置,包括:
確定模塊,用于確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更;
修改模塊,用于若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
結(jié)合第二方面,在第一種可實現(xiàn)的方式中,所述確定模塊,具體用于:
根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間;
確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值;
根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
結(jié)合第二方面的第一種可實現(xiàn)的方式,在第二種可實現(xiàn)的方式中,所述確定模塊,具體用于:
若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
結(jié)合第二方面的第一種可實現(xiàn)的方式,在第三種可實現(xiàn)的方式中,所述確定模塊,具體用于:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華為技術(shù)有限公司,未經(jīng)華為技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410079776.7/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 基于支持類的標(biāo)識來下載Java應(yīng)用的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品
- 啟動JAVA應(yīng)用的方法及裝置
- Java虛擬機(jī)的管理方法、監(jiān)控系統(tǒng)和監(jiān)控代理模塊
- 一種運行Java程序的方法和裝置
- 一種保護(hù)java程序的方法
- Java卡的Java代碼補(bǔ)丁方法
- 一種基于中間件架構(gòu)下java棧的多線程實現(xiàn)方法
- 一種支持JAVA卡補(bǔ)丁函數(shù)的智能卡
- 一種改進(jìn)的Java卡初始化方法和Java卡
- JavaEE平臺構(gòu)建方法、JavaEE平臺及云端系統(tǒng)
- 信息提供系統(tǒng)、信息提供方法、信息提供設(shè)備
- 信息提供裝置、信息提供系統(tǒng)
- 游戲提供系統(tǒng)、游戲提供程序和游戲提供方法
- 游戲提供系統(tǒng)、游戲提供程序和游戲提供方法
- 信息提供方法、信息提供裝置、信息提供系統(tǒng)及信息提供程序
- 動作信息提供裝置、提供系統(tǒng)以及提供方法
- 提供裝置、提供方法、提供系統(tǒng)以及存儲介質(zhì)
- 提供裝置、提供方法、存儲介質(zhì)以及提供系統(tǒng)
- 提供裝置、提供方法、存儲介質(zhì)以及提供系統(tǒng)
- 內(nèi)容提供裝置、內(nèi)容提供方法以及內(nèi)容提供系統(tǒng)





