亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在Java虛擬機(jī)中提供相對定時的方法及裝置制造方法

文檔序號:6539658閱讀:173來源:國知局
在Java虛擬機(jī)中提供相對定時的方法及裝置制造方法
【專利摘要】本發(fā)明實施例提供一種在Java虛擬機(jī)中提供相對定時的方法及裝置。本發(fā)明在Java虛擬機(jī)中提供相對定時的方法,包括:確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更;若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。本發(fā)明實施例,通過確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,并且在確定操作系統(tǒng)時間已經(jīng)發(fā)生變更后,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,實現(xiàn)了在Java虛擬機(jī)中提供相對定時的方法,解決了一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效,從而導(dǎo)致定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行的技術(shù)問題。
【專利說明】在Java虛擬機(jī)中提供相對定時的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù),尤其涉及一種在Java虛擬機(jī)中提供相對定時的方法及裝置。
【背景技術(shù)】
[0002]定時器可以用來處理定時任務(wù)。定時器可分為絕對定時器和相對定時器,其中,絕對定時器基于時間點執(zhí)行定時任務(wù),相對定時器基于時間間隔執(zhí)行定時任務(wù)。在實際應(yīng)用中,相對定時器的應(yīng)用更為頻繁、廣泛。
[0003]在現(xiàn)有技術(shù)中,通常通過java.util.ScheduledThreadPooIExecutor 或者 java.lang.Timer類庫中的函數(shù)調(diào)用C語言的pthread_cond_timedwait函數(shù),實現(xiàn)Java虛擬機(jī)中的相對定時功能。
[0004]然而現(xiàn)有技術(shù)中,一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效,從而導(dǎo)致定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實施例提供一種在Java虛擬機(jī)中提供相對定時的方法及裝置,以克服一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效的技術(shù)問題。
[0006]本發(fā)明的第一方面是提供一種在Java虛擬機(jī)中提供相對定時的方法,包括:
[0007]確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更;
[0008]若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0009]結(jié)合第一方面,在第一種可實現(xiàn)的方式中,所述確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
[0010]根據(jù)預(yù)設(shè)的探測周期,周期性地獲取Java虛擬機(jī)的操作系統(tǒng)時間;
[0011]確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值;
[0012]根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0013]結(jié)合第一方面的第一種可實現(xiàn)的方式,在第二種可實現(xiàn)的方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
[0014]若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0015]結(jié)合第一方面的第一種可實現(xiàn)的方式,在第三種可實現(xiàn)的方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括:
[0016]若所述差值的絕對值不等于所述探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0017]結(jié)合第一方面的第一種可實現(xiàn)的方式至結(jié)合第一方面的第三種可實現(xiàn)的方式中任一種可實現(xiàn)的方式,在第四種可實現(xiàn)的方式中,所述若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,包括:
[0018]根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值;
[0019]根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0020]結(jié)合第一方面的第四種可實現(xiàn)方式,在第五種可實現(xiàn)方式中,所述根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值,包括:
[0021]根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作系統(tǒng)時間、C為所述探測周期。
[0022]本發(fā)明的第二方面是提供一種在Java虛擬機(jī)中提供相對定時的裝置,包括:
[0023]確定模塊,用于確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更;
[0024]修改模塊,用于若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0025]結(jié)合第二方面,在第一種可實現(xiàn)的方式中,所述確定模塊,具體用于:
[0026]根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間;
[0027]確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值;
[0028]根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0029]結(jié)合第二方面的第一種可實現(xiàn)的方式,在第二種可實現(xiàn)的方式中,所述確定模塊,具體用于:
[0030]若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0031]結(jié)合第二方面的第一種可實現(xiàn)的方式,在第三種可實現(xiàn)的方式中,所述確定模塊,具體用于:
[0032]若所述差值的絕對值不等于所述探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0033]結(jié)合第二方面的第一種可實現(xiàn)的方式至結(jié)合第一方面的第三種可實現(xiàn)的方式中任一種可實現(xiàn)的方式,在第四種可實現(xiàn)的方式中,所述修改模塊,具體用于:
[0034]根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值;
[0035]根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0036]結(jié)合第二方面的第四種可實現(xiàn)方式,在第五種可實現(xiàn)的方式中,所述修改模塊,具體用于:
[0037]根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作系統(tǒng)時間、C為所述探測周期。
[0038]本發(fā)明的技術(shù)效果是:通過確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,并且在確定操作系統(tǒng)時間已經(jīng)發(fā)生變更后,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,實現(xiàn)了在Java虛擬機(jī)中提供相對定時的方法,解決了一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效,從而導(dǎo)致定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行的技術(shù)問題。【專利附圖】

【附圖說明】
[0039]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0040]圖1為本發(fā)明在Java虛擬機(jī)中提供相對定時的方法實施例一的流程圖;
[0041]圖2為本發(fā)明在Java虛擬機(jī)中提供相對定時的方法實施例二的流程圖;
[0042]圖3為本發(fā)明在Java虛擬機(jī)中提供相對定時裝置實施例一的結(jié)構(gòu)示意圖。
【具體實施方式】
[0043]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0044]圖1為本發(fā)明在Java虛擬機(jī)中提供相對定時的方法實施例一的流程圖,如圖1所示,本實施例的方法可以包括:
[0045]步驟101、確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0046]相對定時器是一種常用的軟件業(yè)務(wù)邏輯,其應(yīng)用場景包括但不限定于:建立網(wǎng)絡(luò)連接超時、系統(tǒng)閑置超時、服務(wù)端處理用戶請求超時、每隔30分鐘檢查物理磁盤空間占用率等。相對定時器是基于時間間隔執(zhí)行定時任務(wù)的,也即通過相對定時器提交的定時任務(wù),其觸發(fā)時間不受操作系統(tǒng)時間變更的影響。例如,在操作系統(tǒng)時間為10:00時,設(shè)定一個在I小時后被執(zhí)行的相對定時任務(wù),半小時后(操作系統(tǒng)時間為10:30 ),用戶將操作系統(tǒng)時間從10:30變更為10:00,當(dāng)操作系統(tǒng)時間重新達(dá)到10:30時,這個相對定時任務(wù)就會被執(zhí)行。
[0047]然而,在Java虛擬機(jī)中,定時任務(wù)均是通過基于操作系統(tǒng)時間被執(zhí)行的,當(dāng)操作系統(tǒng)時間被更改時,會影響相對定時任務(wù)的執(zhí)行。例如,在操作系統(tǒng)時間為10:00時,設(shè)定一個在I小時后被執(zhí)行的相對定時任務(wù)(即在操作系統(tǒng)時間為11:00時執(zhí)行該相對定時任務(wù)),半小時后(操作系統(tǒng)時間為10:30),用戶將操作系統(tǒng)時間從10:30變更為10:00,當(dāng)操作系統(tǒng)時間重新達(dá)到10:30時,這個相對定時任務(wù)不會被執(zhí)行,而是在操作系統(tǒng)時間為11:00時才會執(zhí)行該相對定時任務(wù)。也就是說,應(yīng)該在距設(shè)定該相對定時任務(wù)的I小時候執(zhí)行該相對定時任務(wù),卻在距設(shè)定該相對定時任務(wù)的1.5小時候后才執(zhí)行該相對定時任務(wù)。這樣,相對定時任務(wù)被延遲了 30分鐘后才執(zhí)行。
[0048]這是因為,Java虛擬機(jī)中僅提供了基于操作系統(tǒng)時間的絕對定時機(jī)制,再基于絕對定時機(jī)制提供相對定時器。以Java語言的開源實現(xiàn)Open JDKCJava Development Kit,Java 開發(fā)工具箱)為例,Java 虛擬機(jī)通過 java.util.ScheduledThreadPooIExecutor 或者java.lang.Timer類庫中的函數(shù)調(diào)用C語言的pthread_cond_timedwait函數(shù)完成對Java虛擬機(jī)中的相對定時器的定義。然而,由于設(shè)計者在設(shè)計之初,并沒有將pthread_cond_timedwait函數(shù)中clockid_t參數(shù)的類型設(shè)置為CL0CK_M0N0T0NIC類型。也即Java虛擬機(jī)的定時任務(wù)均是基于操作系統(tǒng)時間被執(zhí)行,而非基于不可被設(shè)置的單調(diào)時間。本領(lǐng)域技術(shù)人員可以理解的是,單調(diào)時間是通過jiffies值來計算的,該時鐘不受操作系統(tǒng)時鐘的影響,只受jiffies值的影響。因此,一旦變更Java虛擬機(jī)的操作系統(tǒng)時間,就會導(dǎo)致相對定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行。而在上述應(yīng)用場景中相對定時任務(wù)被提前執(zhí)行、被延遲執(zhí)行或者被重復(fù)執(zhí)行,將會導(dǎo)致嚴(yán)重的后果。例如,業(yè)務(wù)邏輯異常、業(yè)務(wù)系統(tǒng)崩潰等。同樣地,Oracle JDK、IBM JDK等也存在這一問題。
[0049]本實施例在不修改Java虛擬機(jī)底層程序代碼的前提下,采用修正Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間的方式,在Java虛擬機(jī)中提供相對定時功能。本領(lǐng)域技術(shù)人員可以理解:只有當(dāng)Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更的時候,Java虛擬機(jī)中相對定時任務(wù)才會發(fā)生混亂,例如,每隔30分鐘檢查物理磁盤空間占用率等。因此,首先需要確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生了變更,若Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生了變更則執(zhí)行步驟102,若Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更則結(jié)束本次操作。需要說明的是,相對定時任務(wù),可以是周期任務(wù),也可以是非周期任務(wù)。其中,非周期任務(wù)也可以認(rèn)為是執(zhí)行次數(shù)為“I”的特殊的周期任務(wù)。還需要說明的是,Java虛擬機(jī)中可以存在一個相對定時任務(wù),也可以存在至少兩個相對定時任務(wù),也就是說本實施例并不對相對定時任務(wù)的個數(shù)進(jìn)行限制。
[0050]步驟102、若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0051]在確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更后,相對定時任務(wù)會發(fā)生混亂,因此需要修改Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,使得這些相對定時任務(wù)在正確的時間點被執(zhí)行。
[0052]例如,在Java虛擬機(jī)的操作系統(tǒng)時間為10:00時,設(shè)定一個在I小時后被執(zhí)行的相對定時任務(wù),也就是說,在Java虛擬機(jī)的操作系統(tǒng)時間為11:00時執(zhí)行該任務(wù),半小時后(此時,Java虛擬機(jī)的操作系統(tǒng)時間為10:30),用戶將Java虛擬機(jī)的操作系統(tǒng)時間從10:30變更為10:00,如果不采用本實施例提供的方法修改該相對定時任務(wù)的執(zhí)行時間,在Java虛擬機(jī)的操作系統(tǒng)時間為11:00時才執(zhí)行該任務(wù),而實際上應(yīng)該在Java虛擬機(jī)的操作系統(tǒng)時間為10:30時執(zhí)行該相對定時任務(wù),也就是說在設(shè)定該任務(wù)的一個半小時后才執(zhí)行該任務(wù),該任務(wù)的執(zhí)行被推遲了半個小時,該相對定時任務(wù)邏輯出錯。
[0053]現(xiàn)將本實施例提供的方法應(yīng)用于上述場景中。根據(jù)本實施例步驟101確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更后,根據(jù)本實施例步驟102修改Java虛擬機(jī)中相對定時任務(wù)的執(zhí)行時間。具體地,將執(zhí)行時間從Java虛擬機(jī)的操作時間11:00修改為Java虛擬機(jī)的操作時間10:30。通過上述步驟可以在Java虛擬機(jī)中提供相對定時功能。
[0054]本實施例,通過確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,并且在確定操作系統(tǒng)時間已經(jīng)發(fā)生變更后,修改Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,實現(xiàn)了在Java虛擬機(jī)中提供相對定時功能,解決了一旦更改Java虛擬機(jī)的操作系統(tǒng)時間,Java虛擬機(jī)中的相對定時功能就會失效,從而導(dǎo)致相對定時任務(wù)被提前觸發(fā)、被延遲觸發(fā)或者被重復(fù)觸發(fā)的技術(shù)問題。
[0055]下面采用一個具體的實施例,對圖1所示方法實施例的技術(shù)方案進(jìn)行詳細(xì)說明。
[0056]圖2為本發(fā)明在Java虛擬機(jī)中提供相對定時的方法實施例二的流程圖,如圖2所示,本實施例的方法可以包括:
[0057]步驟201、根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間。[0058]具體地,為了能夠準(zhǔn)確地、及時地確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生了變更,可以根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間。探測周期可以設(shè)置為5秒鐘、30毫秒等。需要說明的是,本發(fā)明實施例中并不對探測周期進(jìn)行限制,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況的需要任意設(shè)置探測周期。
[0059]更具體地,在本實施例中,Java虛擬機(jī)的啟動工具java.exe中提供了一個agentlib和agentpath參數(shù),兩個參數(shù)都可以用來加載一些自定義的功能擴(kuò)展。Java虛擬機(jī)開機(jī)啟動后,在業(yè)務(wù)正常啟動邏輯的同時,用戶通過在Java虛擬機(jī)的啟動命令行中增加agentlib參數(shù)或者agentpath參數(shù),向Java虛擬機(jī)的操作系統(tǒng)中來加載預(yù)設(shè)的探測周期,其中,可以通過agentlib參數(shù)或者agentpath參數(shù)中任意一個向操作系統(tǒng)會中加載預(yù)設(shè)的探測周期,本實施例對不作限定。還需要說明的是,如何將預(yù)設(shè)的探測周期通過agentlib參數(shù)或者agentpath參數(shù)傳入Java虛擬機(jī)操作系統(tǒng)為現(xiàn)有技術(shù),此處不再贅述。
[0060]步驟202、根據(jù)當(dāng)前周期與前一周期獲取的操作系統(tǒng)時間的差值,確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0061]具體地,若該差值的絕對值等于所述探測周期,則確定Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更;若所述第一差值不等于所述探測周期,則確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更。由于當(dāng)前周期采集到的操作系統(tǒng)時間是在前一周期采集到的操作系統(tǒng)時間之后的一個探測周期被采集到的,因此,當(dāng)前周期采集到的操作系統(tǒng)時間與前一周期采集到的操作系統(tǒng)時間之間的差值的絕對值應(yīng)該等于探測周期。因此,如果該差值的絕對值等于探測周期,則說明在該探測周期內(nèi)用戶沒有變更Java虛擬機(jī)的操作系統(tǒng)時間;如果該差值的絕對值不等于探測周期,則說明在該探測周期內(nèi)用戶變更了 Java虛擬機(jī)的操作系統(tǒng)時間,此時需要修改定時任務(wù)執(zhí)行時間。
[0062]或者優(yōu)選地,若該差值的絕對值等于所述探測周期,則確定Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更;若該差值的絕對值不等于所述探測周期,則進(jìn)一步確定該差值的絕對值是否大于預(yù)設(shè)的敏感值;若該差值的絕對值大于預(yù)設(shè)的敏感值,則確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更;若該差值的絕對值小于預(yù)設(shè)的敏感值,則確定Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更??紤]到在實際應(yīng)用場景中任務(wù)相應(yīng)本身耗時的影響,允許當(dāng)前周期采集到的操作系統(tǒng)時間與前一周期采集到的操作系統(tǒng)時間的差值不嚴(yán)格等于探測周期,也就是說允許該差值的絕對值與探測周期之間存在可允許的誤差。如果該誤差,也即敏感值,不大于預(yù)設(shè)閥值,則說明在該探測周期內(nèi)用戶沒有變更Java虛擬機(jī)的操作系統(tǒng)時間。如果該誤差,也即敏感值,大于預(yù)設(shè)閥值,則說明在該探測周期內(nèi)用戶變更了 Java虛擬機(jī)的操作系統(tǒng)時間,此時需要修改執(zhí)行定時任務(wù)的Java虛擬機(jī)操作系統(tǒng)的時間。該預(yù)設(shè)的敏感值可以設(shè)置為I毫秒、30納秒等。需要說明的是,本發(fā)明實施例中并不對該預(yù)設(shè)的敏感值進(jìn)行限制,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況的需要任意設(shè)置該預(yù)設(shè)閾值。
[0063]用戶通過在Java虛擬機(jī)的啟動命令行中增加agentlib參數(shù)或者agentpath參數(shù),向Java虛擬機(jī)的操作系統(tǒng)中來加載預(yù)設(shè)的敏感值,其中,可以通過agentlib參數(shù)或者agentpath參數(shù)中任意一個向操作系統(tǒng)會中加載預(yù)設(shè)的敏感值,本實施例對不作限定。
[0064]步驟203、修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0065]具體地,根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值;根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0066]在確定Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更后,還要獲得Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0067]更具體地,根據(jù)公式A-(B+C)確定執(zhí)行時間修正值,其中,A為當(dāng)前周期采集到的操作系統(tǒng)時間、B為前一周期采集到的操作系統(tǒng)時間、C為所述探測周期。本領(lǐng)域技術(shù)人員可以理解,A-(B+C)的計算結(jié)果符號為正,則說明用戶將Java虛擬機(jī)的操作系統(tǒng)時間向未來調(diào)整,那么執(zhí)行相對定時任務(wù)的Java虛擬機(jī)操作系統(tǒng)時間也應(yīng)該向未來調(diào)整,調(diào)整的量與A_(B+C)的值相同,如果A-(B+C)的計算結(jié)果符號為負(fù),則說明用戶將Java虛擬機(jī)的操作系統(tǒng)時間向過去調(diào)整,那么執(zhí)行相對定時任務(wù)的Java虛擬機(jī)操作系統(tǒng)時間也應(yīng)該向過去調(diào)整,調(diào)整的量與A-(B+C)的值相同。再將執(zhí)行時間修正值與Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間相加,確定修改操作系統(tǒng)時間后定時任務(wù)的執(zhí)行時間。
[0068]優(yōu)選地,本實施例的操作系統(tǒng)在修改定時任務(wù)的執(zhí)行時間前,先遍歷操作系統(tǒng)中的所有定時任務(wù),以獲得操作系統(tǒng)中所有的定時任務(wù),從而能夠修改系統(tǒng)中的所有的定時任務(wù)的執(zhí)行時間。本領(lǐng)域技術(shù)人員可以理解,如果是周期性的定時任務(wù),具體是修改當(dāng)次的執(zhí)行時間,下次的執(zhí)行時間將根據(jù)當(dāng)次的執(zhí)行時間與執(zhí)行周期相加。
[0069]本實施例,通過周期性地獲取Java虛擬機(jī)操作系統(tǒng)的時間,比較前一周期采集到的操作系統(tǒng)時間與當(dāng)前周期采集到的操作系統(tǒng)時間的差值,更加準(zhǔn)確地、及時地獲知用戶更改了 Java虛擬機(jī)的操作系統(tǒng)時間,從而相應(yīng)的修改Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0070]在上述實施例的基礎(chǔ)上,本方法實施例三提供一種更為具體的在Java虛擬機(jī)中提供相對定時機(jī)制的實現(xiàn)方式。
[0071]圖3為本發(fā)明在Java虛擬機(jī)中提供相對定時裝置實施例一的結(jié)構(gòu)示意圖,如圖3所示,本實施例的在Java虛擬機(jī)中提供相對定時裝置可以包括:確定模塊11、修改模塊12。
[0072]其中,確定模塊11,用于確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0073]修改模塊12,用于若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0074]本實施例的在Java虛擬機(jī)中提供相對定時裝置,可以用于執(zhí)行圖1所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0075]在本發(fā)明在Java虛擬機(jī)中提供相對定時裝置實施例一的基礎(chǔ)上,確定模塊11,具體用于:
[0076]根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間;
[0077]確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值;
[0078]根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
[0079]其中,若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0080]或者其中,若所述差值的絕對值不等于所述探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
[0081 ] 修改模塊12,具體用于:
[0082]根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值;
[0083]根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
[0084]更具體地,修改模塊12,具體用于:根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作系統(tǒng)時間、C為所述探測周期。
[0085]本實施例的在Java虛擬機(jī)中提供相對定時裝置,可以用于執(zhí)行圖2所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0086]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0087]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種在Java虛擬機(jī)中提供相對定時的方法,其特征在于,包括: 確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更; 若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括: 根據(jù)預(yù)設(shè)的探測周期,周期性地獲取Java虛擬機(jī)的操作系統(tǒng)時間; 確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值; 根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括: 若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更,包括: 若所述差值的絕對值不等于所述`探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
5.根據(jù)權(quán)利要求2~4中任一項所述的方法,其特征在于,所述若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,包括: 根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值; 根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值,包括: 根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作系統(tǒng)時間、C為所述探測周期。
7.一種在Java虛擬機(jī)中提供相對定時的裝置,其特征在于,包括: 確定模塊,用于確定Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更; 修改模塊,用于若所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,則修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述確定模塊,具體用于: 根據(jù)預(yù)設(shè)的探測周期,周期性地采集Java虛擬機(jī)的操作系統(tǒng)時間; 確定當(dāng)前周期獲取的操作系統(tǒng)時間與前一周期獲取的操作系統(tǒng)時間的差值; 根據(jù)所述差值,確定所述Java虛擬機(jī)的操作系統(tǒng)時間是否發(fā)生變更。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述確定模塊,具體用于: 若所述差值的絕對值大于預(yù)設(shè)的敏感時間,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述確定模塊,具體用于: 若所述差值的絕對值不等于所述探測周期,則確定所述Java虛擬機(jī)的操作系統(tǒng)時間發(fā)生變更,否則確定所述Java虛擬機(jī)的操作系統(tǒng)時間未發(fā)生變更。
11.根據(jù)權(quán)利要求8~10中任一項所述的裝置,其特征在于,所述修改模塊,具體用于: 根據(jù)所述差值,確定所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間修正值; 根據(jù)所述執(zhí)行時間修正值以及修改前獲得的所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間,修改所述Java虛擬機(jī)中定時任務(wù)的執(zhí)行時間。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述修改模塊,具體用于: 根據(jù)公式A-(B+C)確定所述執(zhí)行時間修正值,其中,A為當(dāng)前周期獲取的操作系統(tǒng)時間、B為前一周期獲取的操作`系統(tǒng)時間、C為所述探測周期。
【文檔編號】G06F9/455GK103823711SQ201410079776
【公開日】2014年5月28日 申請日期:2014年3月5日 優(yōu)先權(quán)日:2014年3月5日
【發(fā)明者】童志剛 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1