新四季網

計劃調度定時任務的方法

2023-12-07 07:11:26

專利名稱:計劃調度定時任務的方法
技術領域:
本發明涉及通訊領域,尤其涉及一種計劃調度定時任務的方法。
背景技術:
隨著信息技術的發展,計劃調度任務的需求越來越廣泛,如,企業需要計劃調度每目的目志或者晚間批處理過程;用戶需要根據約定計劃調度鬧鈴時間,等等。
與本發明相關的現有技術一,是基於Java應用程式實現任務的計劃調度的技術方案,在該方案中引入了定時器框架,使用該定時器框架能夠使程式設計師比較容易地計劃簡單的任務。在所述Java定時器框架中使用一個隊列存放所有定時任務,使用一個後臺線程完成所有任務的調度與執行。其處理流程如圖1所示,包括步驟S101、主線程註冊定時任務,指定開始時間,時間間隔;步驟S102、將後臺線程從等待狀態喚醒,之後結束主線程;當所述後臺線程從等待狀態被喚醒後,其執行步驟S103,即所述後臺線程從任務隊列中取出一個執行時間最早的定時任務;步驟S104、所述後臺線程判斷所述取出的定時任務的執行時間是否大於所述當前時間,若是,則執行步驟S105,即等待,等待時間為執行時間減去當前時間,然後轉入步驟S103;否則,執行步驟S106,即執行所述定時任務;然後執行步驟S107;步驟S107、判斷所述取出的定時任務是否需要重複執行,若需要重複執行,則執行步驟S108,即修改所述定時任務的執行時間,即將當前執行時間加上設定的時間間隔,然後用修改後的執行時間更新所述定時任務的執行時間,然後轉入步驟S103;如果不需要重複執行,即確認所述定時任務為單次任務時,則執行步驟S109,即將所述單次定時任務從任務隊列中刪除,然後轉入步驟S103。
由現有技術的技術方案可以看出,由於現有技術通過指定一個固定的執行時間間隔來實現重複執行的定時任務,因而其存在如下缺陷1、無法實現任意複雜的定時任務的計劃調度,缺乏靈活性;2、即使對每天同一時刻執行的任務,也會因為在夏令時開始和結束時出現時間跳躍;3、當中途進行系統時間修正時,定時器無法感知,仍按照修正前的時間進行調度;4、使用單一的後臺線程調度並執行所有定時任務,處理能力弱,當執行某個任務耗費時間比較多時,容易產生時間漂移,即容易延遲其它任務的執行;5、支持的定時任務數目少。

發明內容
鑑於上述現有技術所存在的問題,本發明的目的是提供一種計劃調度定時任務的方法,通過該方法,能夠支持任意複雜的計劃調度,如每天同一時刻執行任務、每周某幾天同一時刻執行任務、每月某幾天同一時刻執行任務等等,因而比較靈活;通過該方法,當使用日曆時,從而屏蔽了夏令時的影響;當中途進行系統時間修正時,下一次的調度能夠按照修正後的系統時間進行;通過該方法引入的線程池技術,能夠並發處理定時任務,一方面提高了處理能力,另一方面不會延遲其他任務的執行;而且本發明能夠支持更多數量的定時任務。
本發明的目的是通過以下技術方案實現的本發明提供的一種計劃調度定時任務的方法,包括A、基於定時迭代器,通過至少兩個線程調度並執行計劃調度的定時任務。
其中,所述步驟A具體包括A1、後臺線程從任務隊列中獲取執行時間最早的定時任務;A2、判斷所述獲取的定時任務的執行時間是否大於當前時間,若大於,則所述線程進入等待狀態,當等待時間到時,執行步驟A3;否則直接執行步驟A3;A3、判斷是否能夠獲取到所述定時任務的下次執行時間,若是,則從所述定時迭代器中獲取所述定時任務的下次執行時間,並根據所述獲取的下次執行時間更新所述定時任務的執行時間,然後執行步驟A4;否則,刪除任務隊列中的所述定時任務,然後執行步驟A4;A4、喚醒線程池中的後臺線程,並執行所述獲取的定時任務,然後轉入步驟A1。
其中,在所述步驟A1之前包括A5、主線程指定定時迭代器,並將計劃調度的定時任務放入任務隊列中,然後喚醒線程池中的後臺線程;A6、所述線程池中的後臺線程通過競爭,只有一個後臺線程獲取調度定時任務的權利。
其中,所述步驟A1具體包括A11、後臺線程判斷所述任務隊列是否為空,當確認所述任務隊列不為空時,則執行步驟A12;否則,繼續執行步驟A11;A12、從所述任務隊列中獲取執行時間最早的定時任務。
其中,所述步驟A4還包括所述被喚醒的後臺線程通過競爭,只有一個後臺線程獲取調度定時任務的權利,然後轉入步驟A1。
其中,所述步驟A具體包括A7、所述主線程根據註冊的定時任務,從所述指定的定時迭代器中獲取所述定時任務的執行時間,並根據所述獲取的執行時間在定時器框架中註冊單次執行的任務;A8、定時觸發所述定時框架,將其內所述註冊的單次執行的定時任務放入後臺線程池的任務隊列中,由所述後臺線程對所述放入任務隊列中的定時任務進行處理;A9、當從定時迭代器中獲取到所述定時任務的下一次執行時間時,根據所述獲取的下一次執行時間向所述定時框架中註冊單次執行的任務。
其中,在所述步驟A7之前包括A10、主線程註冊定時任務,並指定定時迭代器。
其中,步驟A8中所述後臺線程對所述放入任務隊列中的定時任務進行處理的過程具體包括A81、通過所述後臺線程池中的線程的競爭,只有一個後臺線程獲取調度定時任務的權利;A82、所述獲取調度定時任務的權利的後臺線程,調度並執行所述放入任務隊列中的定時任務,當執行完畢後,刪除所述定時任務。
其中,所述步驟A9具體包括A91、判斷是否能夠從定時迭代器中獲取到所述定時任務的下一次執行時間,若是,則根據所述獲取的下一次執行時間向所述定時框架中註冊單次執行的任務;否則,結束此步驟。
由上述本發明提供的技術方案可以看出,本發明所述的方法基於定時迭代器,通過至少兩個線程調度並執行計劃調度的定時任務。通過本發明將計劃以定時迭代器的方式獨立出來,便於實現任意複雜的計劃;而且在實現定時達代器時使用日曆算法,消除了夏令時的偏差,解決夏令時修正問題;當使用定時迭代器之後,每一次迭代都按照當前的系統時間進行計算,所以能夠不受中途修正系統時間的影響,及時感知系統時間的修正,保證了計劃的準確性;另外,本發明引入線程池技術,從根本上解決時間漂移問題,並且大大提高計劃調度以及執行任務的能力,從而能夠容納更多的定時任務。


圖1為現有技術的流程圖;圖2為本發明提供的第一實施例的流程圖;圖3為本發明提供的第二實施例的流程圖。
具體實施例方式
本發明提供了一種計劃調度定時任務的方法,其主要思路是通過提供一個預定義的時間序列來實現任意複雜的計劃,該時間序列是一個個將要觸發任務執行的時間點,由定時迭代器產生。在註冊定時任務時,只要指定定時迭代器,就等於指定了執行定時任務的計劃。另外通過引入線程池技術,也就是說使用多個後臺線程並發執行定時任務,從根本上解決時間漂移問題。
本發明的核心是基於定時迭代器,通過至少兩個線程調度並執行計劃調度的定時任務。
本發明提供的第一實施例,如圖2所示,包括步驟S201,主線程註冊定時任務,指定定時迭代器;並將定時任務放入任務隊列。
步驟S202、將所有處於等待狀態的後臺線程喚醒,之後結束主線程。
步驟S203、所述被喚醒的後臺線程參與線程競爭,只有一個後臺線程獲取調度定時任務的權利。
當確認所述任務隊列不為空時執行步驟S204,即所述獲取調度定時任務的權利的後臺線程從所述任務隊列中取出執行時間最早的定時任務;步驟S205、判斷所述取出的定時任務的執行時間是否大於當前時間,若大於當前時間,則執行步驟S206,即等待,等待時間為執行時間減去當前時間,然後轉入步驟S207;否則,直接執行步驟S207。
步驟S207、判斷是否能夠從所述定時迭代器中獲取到任務的下次執行時間。
如果能夠從所述定時迭代器中獲取到任務的下次執行時間,則表明該任務為重複執行的任務,不需要被取消,於是執行步驟S208,即從定時迭代器中獲取任務的下次執行時間;然後執行步驟S209,即用所述獲取到的下次執行時間去更新所述定時任務的執行時間;然後執行步驟S211;如果不能夠從所述定時迭代器中獲取到任務的下次執行時間,則確定該任務為單次執行的任務或重複執行的任務已經結束,則需要被取消,於是執行步驟S210,即將所述定時任務從任務隊列中刪除,然後轉入步驟S211。
步驟S211,喚醒其它所有後臺線程(其它後臺線程轉入步驟S203,即去參與線程競爭),然後執行步驟S212。
步驟S212,所述後臺線程執行所述獲取的定時任務。當執行完畢後,轉入步驟S203,即繼續與其它後臺線程參與線程競爭。
在上述本發明的技術方案中,所有的定時迭代器都提供一個相同的接口供計劃調度框架調用,所述定時迭代器的本質是一個用日期表示的時間點序列,可以通過各種算法來定義任意複雜的計劃。下面舉例說明需要在一個每天固定時間執行任務的定時迭代器的實現方法假設定時任務需要在每天早上9點執行,當計劃調度框架調用接口方法獲取下一次執行時間時,定時迭代器根據日曆算法,在本次執行時間的基礎上加上一天,這樣就得到了第二天的執行時間。當需要夏令時修正時,所述定時迭代器通過日曆算法進行處理。
由上述本發明的技術方案可以看出當本發明執行到步驟S211時,其它後臺線程被喚醒,參與線程競爭後,其中的一個線程獲取調度定時任務的權利,開始調度並執行所述定時任務;由於當前線程處理定時任務需要一定時間,這與任務的複雜程度有關,而另一線程完成調度後也可能馬上開始調度並執行定時任務,如果是這樣,那麼此時就有兩個後臺線程同時執行定時任務。以此類推,本發明引入線程池技術,從根本上解決了時間漂移的問題,並且大大提高了計劃調度以及執行任務的能力。
本發明提供的第二實施例,利用現有技術中的Java定時器框架提供的單次調度能力,使用線程池執行定時任務,同樣能夠達到本發明的目的。具體實施過程如圖3所示,包括步驟S301,主線程註冊定時任務,並指定定時迭代器。
步驟S302,所述主線程從所述指定的定時迭代器中獲取定時任務的執行時間。
步驟S303,所述主線程根據所述獲取的下次執行時間在定時器框架中,如Java定時器框架中,註冊一個單次執行的任務;然後結束。
步驟S304,通過所述定時框架中的Timer(計時器)定時觸發,將所述定時框架中的所述註冊的單次執行的定時任務放入後臺線程池的任務隊列中,由後臺線程進行處理,然後執行步驟S305。
步驟304中,當將所述定時框架中的所述註冊的單次執行的定時任務放入後臺線程池的任務隊列中,由後臺線程進行處理後,所述後臺線程對任務隊列中的定時任務進行處理的過程具體包括所述後臺線程池通過競爭,只有其中一個線程獲取定時任務的執行權,其開始調度執行所述放入任務隊列中的定時任務,執行完畢後,刪除所述定時任務。
步驟S305,判斷是否能夠獲取到所述任務的下一次執行時間,若能夠獲取下一次執行時間,則表明所述任務為重複執行的任務,於是執行步驟S306,即從定時迭代器中獲取下一次執行時間,並根據所述獲取的下一次執行時間向所述定時框架中註冊單次執行的任務;如果獲取不到下一次執行時間,則表明所述任務為單次執行的任務或重複執行的任務已經結束,於是執行步驟S307,即結束此步驟。
由上述本發明的提供的技術方案可以看出,本發明將計劃以定時迭代器的方式獨立出來,便於實現任意複雜的計劃;而且在實現定時迭代器時使用日曆算法,消除了夏令時的偏差,解決夏令時修正問題;當使用定時迭代器之後,每一次迭代都按照當前的系統時間進行計算,所以能夠不受中途修正系統時間的影響,及時感知系統時間的修正,保證了計劃的準確性;另外,本發明引入線程池技術,從根本上解決時間漂移問題,並且大大提高計劃調度以及執行任務的能力,從而能夠容納更多的定時任務。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求的保護範圍為準。
權利要求
1.一種計劃調度定時任務的方法,其特徵在於,包括A、基於定時迭代器,通過至少兩個線程調度並執行計劃調度的定時任務。
2.根據權利要求1所述的方法,其特徵在於,所述步驟A具體包括A1、後臺線程從任務隊列中獲取執行時間最早的定時任務;A2、判斷所述獲取的定時任務的執行時間是否大於當前時間,若大於,則所述線程進入等待狀態,當等待時間到時,執行步驟A3;否則直接執行步驟A3;A3、判斷是否能夠獲取到所述定時任務的下次執行時間,若能,則從所述定時迭代器中獲取所述定時任務的下次執行時間,並根據所述獲取的下次執行時間更新所述定時任務的執行時間,然後執行步驟A4;否則,刪除任務隊列中的所述定時任務,然後執行步驟A4;A4、喚醒線程池中的後臺線程,並執行所述獲取的定時任務,然後轉入步驟A1。
3.根據權利要求2所述的方法,其特徵在於,在所述步驟A1之前包括A5、主線程指定定時迭代器,並將計劃調度的定時任務放入任務隊列中,然後喚醒線程池中的後臺線程;A6、所述線程池中的後臺線程通過競爭,只有一個後臺線程獲取調度定時任務的權利。
4.根據權利要求2或3所述的方法,其特徵在於,所述步驟A1具體包括A11、後臺線程判斷所述任務隊列是否為空,當確認所述任務隊列不為空時,則執行步驟A12;否則,繼續執行步驟A11;A12、從所述任務隊列中獲取執行時間最早的定時任務。
5.根據權利要求4所述的方法,其特徵在於,所述步驟A4還包括所述被喚醒的後臺線程通過競爭,只有一個後臺線程獲取調度定時任務的權利,然後轉入步驟A1。
6.根據權利要求1所述的方法,其特徵在於,所述步驟A具體包括A7、所述主線程根據註冊的定時任務,從所述指定的定時迭代器中獲取所述定時任務的執行時間,並根據所述獲取的執行時間在定時器框架中註冊單次執行的任務;A8、定時觸發所述定時框架,將其內所述註冊的單次執行的定時任務放入後臺線程池的任務隊列中,由所述後臺線程對所述放入任務隊列中的定時任務進行處理;A9、當從定時迭代器中獲取到所述定時任務的下一次執行時間時,根據所述獲取的下一次執行時間向所述定時框架中註冊單次執行的任務。
7.根據權利要求6所述的方法,其特徵在於,在所述步驟A7之前包括A10、主線程註冊定時任務,並指定定時迭代器。
8.根據權利要求6所述的方法,其特徵在於,步驟A8中所述後臺線程對所述放入任務隊列中的定時任務進行處理的過程具體包括A81、通過所述後臺線程池中的線程的競爭,只有一個後臺線程獲取調度定時任務的權利;A82、所述獲取調度定時任務的權利的後臺線程,調度並執行所述放入任務隊列中的定時任務,當執行完畢後,刪除所述定時任務。
9.根據權利要求6所述的方法,其特徵在於,所述步驟A9具體包括A91、判斷是否能夠從定時迭代器中獲取到所述定時任務的下一次執行時間,若是,則根據所述獲取的下一次執行時間向所述定時框架中註冊單次執行的任務;否則,結束此步驟。
全文摘要
本發明涉及一種計劃調度定時任務的方法,其核心是基於定時迭代器,通過至少兩個線程調度並執行計劃調度的定時任務。通過本發明將計劃以定時迭代器的方式獨立出來,便於實現任意複雜的計劃;而且在實現定時迭代器時使用日曆算法,消除了夏令時的偏差,解決夏令時修正問題;當使用定時迭代器之後,每一次迭代都按照當前的系統時間進行計算,所以能夠不受中途修正系統時間的影響,及時感知系統時間的修正,保證了計劃的準確性;另外,本發明引入線程池技術,從根本上解決時間漂移問題,並且大大提高計劃調度以及執行任務的能力,從而能夠容納更多的定時任務。
文檔編號G06F9/46GK1862575SQ20051009090
公開日2006年11月15日 申請日期2005年8月19日 優先權日2005年8月19日
發明者張磊, 龔華 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀