專利名稱:一種定時器任務(wù)自動處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種定時器任務(wù)自動處理方法及系統(tǒng)。
背景技術(shù):
在應(yīng)用系統(tǒng)/應(yīng)用平臺中,定時器(Timer)常被用來完成周期性的任務(wù)或特定時刻的待執(zhí)行任務(wù)。對于需要支持大量Timer任務(wù)的平臺或系統(tǒng),Timer任務(wù)管理和執(zhí)行決定了該平臺或系統(tǒng)的性能。在現(xiàn)有技術(shù)中主要通過平衡堆的方式進(jìn)行Timer任務(wù)的管理和執(zhí)行,需要花費較多的時間來進(jìn)行平衡堆的調(diào)整,系統(tǒng)開銷較大。針對該問題,華為技術(shù)有限公司提出申請?zhí)枮?00510130535. 1的發(fā)明專利申請, 在該申請中提出了一種對定時器任務(wù)進(jìn)行管理的方法,具體為提供了一種對Timer (定時器)任務(wù)進(jìn)行管理的方法,包括步驟在系統(tǒng)中創(chuàng)建至少一個固定周期定時器任務(wù)隊列,所述固定周期定時器任務(wù)隊列的屬性包括一特定觸發(fā)周期;將系統(tǒng)中的定時器任務(wù)放入與其觸發(fā)周期相同的所述固定周期定時器任務(wù)隊列,對該定時器任務(wù)進(jìn)行管理。然而,在該申請中,將特定周期的任務(wù)放入特定周期定時器任務(wù)隊列中進(jìn)行處理,嚴(yán)重約束了任務(wù)的觸發(fā)周期,不適用于處理多樣化的周期任務(wù),也不能有效處理隨機(jī)的定時器任務(wù),同時,一個固定周期定時器任務(wù)隊列的執(zhí)行時順序的,在處理大量定時器任務(wù)時,無法實現(xiàn)并發(fā)處理,系統(tǒng)資源的利用率低。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種定時器任務(wù)自動處理方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)Timer任務(wù)處理效率低、系統(tǒng)資源利用率低的問題。本發(fā)明實施例是這樣實現(xiàn)的,一種定時器任務(wù)自動處理方法,所述方法包括下述步驟循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將所述定時器任務(wù)添加到第二預(yù)設(shè)隊列;循環(huán)監(jiān)聽所述第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。本發(fā)明實施例的另一目的在于提供一種定時器任務(wù)自動處理系統(tǒng),其特征在于, 所述系統(tǒng)包括第一監(jiān)聽單元,用于循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入;任務(wù)添加單元,用于當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將所述定時器任務(wù)添加到第二預(yù)設(shè)隊列;第二監(jiān)聽單元,用于循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入;以及任務(wù)處理單元,用于當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。本發(fā)明實施例對第一預(yù)設(shè)隊列進(jìn)行循環(huán)監(jiān)聽,當(dāng)監(jiān)聽到有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列,同時,循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù),解決了現(xiàn)有技術(shù)無法實現(xiàn)定時器任務(wù)并發(fā)處理,系統(tǒng)資源的利用率低的問題,通過調(diào)用對應(yīng)的線程對定時器任務(wù)進(jìn)行處理,提高了任務(wù)的并發(fā)處理能力,進(jìn)而提高了系統(tǒng)資源的利用率。
圖1是本發(fā)明實施例一提供的定時器任務(wù)自動處理方法的實現(xiàn)流程圖;圖2是本發(fā)明實施例二提供的定時器任務(wù)自動處理方法的實現(xiàn)流程圖;圖3是本發(fā)明實施例三提供的定時器任務(wù)自動處理方法的實例圖;圖4是本發(fā)明實施例四提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu)圖;圖5是本發(fā)明實施例五提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu)圖;圖6是本發(fā)明實施例六提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu)圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。以下結(jié)合具體實施例對本發(fā)明的具體實現(xiàn)進(jìn)行詳細(xì)描述實施例一圖1示出了本發(fā)明實施例一提供的定時器任務(wù)自動處理方法的實現(xiàn)流程,詳述如下在步驟SlOl中,循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。在步驟S102中,當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列。在本發(fā)明實施例中,預(yù)先建立一個隊列,用于存儲定時器任務(wù),該定時器任務(wù)可以為用戶定制的定時任務(wù),也可以是其它應(yīng)用程序生成的定時任務(wù),在此不用限制并發(fā)明,同時,對該隊列循環(huán)監(jiān)聽,從而實現(xiàn)對用戶定制的定時器任務(wù)的實時發(fā)現(xiàn)。當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列,并在第一預(yù)隊列中刪除該定時器任務(wù)。在步驟S103中,循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入。在本發(fā)明實施例中,預(yù)先創(chuàng)建一個隊列,即第二預(yù)隊列,以用于臨時存放將要執(zhí)行的定時器任務(wù),起到一定緩存作用,并對該隊列進(jìn)行實時的監(jiān)聽。在步驟S104中,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。在本發(fā)明實施例中,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程執(zhí)行該定時器任務(wù),并刪除第二預(yù)設(shè)隊列中的該任務(wù),以實現(xiàn)定時器任務(wù)的實時處理,在具體實施過程中,可以創(chuàng)建一個新的線程對該定時器任務(wù)進(jìn)行處理,也可以將該定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池中,由線程池中的線程進(jìn)行執(zhí)行,從而大大減少了線程的創(chuàng)建和銷毀次數(shù),提高了定時器任務(wù)處理的工作效率。具體地,在本發(fā)明實施例中,可以預(yù)先創(chuàng)建第一監(jiān)聽線程和第二監(jiān)聽線程分別用于循環(huán)監(jiān)聽第一預(yù)設(shè)隊列和第二預(yù)設(shè)隊列,從而提高系統(tǒng)的并發(fā)程度,提高中央處理器 (CPU)、內(nèi)存等資源的利用率。在本發(fā)明實施例中,當(dāng)定時器任務(wù)執(zhí)行成功時,則可以返回執(zhí)行結(jié)果數(shù)據(jù),當(dāng)定時器任務(wù)執(zhí)行失敗時,較優(yōu)地,應(yīng)將定時器任務(wù)寫入第三預(yù)設(shè)隊列中,以方便用戶對任務(wù)執(zhí)行失敗的原因進(jìn)行分析,或在其下一循環(huán)周期的定時時間到達(dá)時,直接將其加入第一預(yù)設(shè)隊列再次執(zhí)行,從而提高任務(wù)異常處理的智能化程度。在本發(fā)明實施例中,預(yù)先建立第一預(yù)設(shè)隊列和第二預(yù)設(shè)隊列,并對兩個隊列進(jìn)行循環(huán)監(jiān)聽,兩個隊列中任務(wù)的添加、監(jiān)聽,以及線程的處理都可以進(jìn)行并發(fā)執(zhí)行,從而提高了任務(wù)的并發(fā)處理能力,進(jìn)而提高了系統(tǒng)資源的利用率。實施例二 在本發(fā)明實施例中,采用線程池執(zhí)行定時器任務(wù),從而防止了頻繁的線程創(chuàng)建與銷毀引起的大量系統(tǒng)資源浪費,使得更多的CPU時間和內(nèi)存可以用來處理實際的定時器任務(wù)(例如,商業(yè)應(yīng)用)。圖2示出了本發(fā)明實施例二提供的定時器任務(wù)自動處理方法的實現(xiàn)流程,詳述如下在步驟S201中,循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。在步驟S202中,當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列。 在本發(fā)明實施例中,預(yù)先建立一個隊列,用于存儲定時器任務(wù),該定時器任務(wù)可以為用戶定制的定時任務(wù),也可以是其它應(yīng)用程序生成的定時任務(wù),在此不用限制并發(fā)明,同時,循環(huán)監(jiān)聽該隊列,從而實現(xiàn)對用戶定制的定時器任務(wù)的實時發(fā)現(xiàn)。當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列,并在第一預(yù)隊列中刪除該定時器任務(wù)。在步驟S203中,循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入。在本發(fā)明實施例中,預(yù)先創(chuàng)建一個隊列,即第二預(yù)隊列,以用于臨時存放將要執(zhí)行的定時器任務(wù),并對該隊列進(jìn)行實時的監(jiān)聽。在步驟S204中,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池。在線程池中,先啟動若干數(shù)量的線程,并讓這些線程都處于睡眠狀態(tài),當(dāng)接收到一個新請求時,喚醒線程池中的某一個睡眠線程,讓其處理該請求,當(dāng)處理完請求后,線程又處于睡眠狀態(tài),線程可以循環(huán)執(zhí)行接收到請求任務(wù)。在本發(fā)明實施例中,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池,由線程池進(jìn)行定時器任務(wù)的執(zhí)行。在步驟S205中,判斷線程池的緩存隊列是否已滿,當(dāng)線程池的緩存隊列已滿時, 執(zhí)行步驟S206,否則執(zhí)行步驟S207。
在本發(fā)明實施例中,線程池中設(shè)置一緩存隊列用于緩存添加至線程池中、來不及處理執(zhí)行的定時器任務(wù),緩存隊列的長度在創(chuàng)建線程池時進(jìn)行設(shè)定。在步驟S206中,當(dāng)線程池的緩存隊列已滿時,阻塞第二預(yù)設(shè)隊列的監(jiān)聽。在本發(fā)明實施例中,當(dāng)線程池的緩存隊列已滿時,阻塞第二預(yù)設(shè)隊列的監(jiān)聽,從而不再將進(jìn)入第二預(yù)設(shè)隊列添加到線程池,第二預(yù)設(shè)隊列在一定程度上可以緩存進(jìn)入的定時器任務(wù)。當(dāng)經(jīng)過一段時間后,線程池的緩存隊列中部分定時器任務(wù)已經(jīng)被執(zhí)行完,可以接收新的定時器任務(wù)進(jìn)入,此時,啟動第二預(yù)設(shè)隊列的循環(huán)監(jiān)聽。在步驟S207中,當(dāng)線程池的緩存隊列未滿時,控制線程池執(zhí)行定時器任務(wù)。在本發(fā)明實施例中,當(dāng)線程池的緩存隊列未滿時,如果線程池的緩存隊列為空,則可以喚醒一個休眠的線程立即執(zhí)行該定時器任務(wù),如果線程池的緩存隊列不為空,則將定時器任務(wù)添加緩沖隊列,等待被執(zhí)行,當(dāng)排在其前方的定時器任務(wù)被執(zhí)行完成時,則執(zhí)行該任務(wù)。在本發(fā)明實施例中,當(dāng)定時器任務(wù)添加到線程池時,刪除第二預(yù)設(shè)隊列中的該任務(wù),如果定時器任務(wù)在線程池中被成功執(zhí)行,則通過線程池提高的接口返回相應(yīng)的執(zhí)行結(jié)果數(shù)據(jù),當(dāng)定時器任務(wù)執(zhí)行失敗時,較優(yōu)地,應(yīng)將定時器任務(wù)寫入第三預(yù)設(shè)隊列中,以方便用戶對任務(wù)執(zhí)行失敗的原因進(jìn)行分析,或在其下一循環(huán)周期的定時時間到達(dá)時,直接將其加入第一預(yù)設(shè)隊列再次執(zhí)行,從而提高任務(wù)異常處理的智能化程度。在本發(fā)明實施例中,將定時器任務(wù)添加到線程池,由線程池中的線程進(jìn)行任務(wù)的執(zhí)行,減少單獨創(chuàng)建和銷毀線程的次數(shù),特別是一些資源耗費此較大的線程的創(chuàng)建和銷毀, 從而盡量利用已有線程來執(zhí)行定時器任務(wù),提高系統(tǒng)的并發(fā)能力,提高系統(tǒng)資源的利用效率。實施例三圖3示出了本發(fā)明實施例三提供的定時器任務(wù)自動處理方法的具體實例圖,詳述如下在本發(fā)明實施例中,定時器任務(wù)自動處理系統(tǒng)包括三個部分Web客戶端、服務(wù)器和數(shù)據(jù)庫,數(shù)據(jù)庫可以作為服務(wù)器的一部分,也可以單獨部署。在Web客戶端可以向用戶提供失敗任務(wù)的查詢、定時器任務(wù)的參數(shù)配置,以方便用戶定時器任務(wù)的定制;在服務(wù)器上創(chuàng)建有用于處理定時器任務(wù)的線程池、以及用于數(shù)據(jù)庫存取的DAO ;數(shù)據(jù)庫用于存儲定時器相關(guān)的數(shù)據(jù),例如用于存儲用戶定制的定時器任務(wù)的第一預(yù)設(shè)隊列、用于存儲從第一預(yù)設(shè)隊列進(jìn)入的定時器任務(wù)的第二預(yù)設(shè)隊列以及用于存儲線程池中執(zhí)行失敗的定時器任務(wù)的失敗任務(wù)隊列。具體地,定時器任務(wù)自動處理方法的具體實現(xiàn)不受此限制。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中, 所述的存儲介質(zhì),如ROM/RAM、磁盤、光盤等。實施例四圖4示出了本發(fā)明實施例四提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,其中包括第一監(jiān)聽單元41循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。任務(wù)添加單元42當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列。第二監(jiān)聽單元43循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入。任務(wù)處理單元44當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。任務(wù)寫入單元45當(dāng)處理進(jìn)入的定時器任務(wù)失敗時,將定時器任務(wù)寫入第三預(yù)設(shè)隊列中。在本發(fā)明實施例中,預(yù)先建立第一預(yù)設(shè)隊列和第二預(yù)設(shè)隊列,并對兩個隊列進(jìn)行循環(huán)監(jiān)聽,兩個隊列中任務(wù)的添加、監(jiān)聽,以及線程的處理都可以進(jìn)行并發(fā)執(zhí)行,從而提高了任務(wù)的并發(fā)處理能力,進(jìn)而提高了系統(tǒng)資源的利用率。實施例五圖5示出了本發(fā)明實施例五提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,其中包括線程創(chuàng)建單元51創(chuàng)建第一監(jiān)聽線程和第二監(jiān)聽線程。第一監(jiān)聽單元52循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。第一監(jiān)聽單元52可以包括用于調(diào)用第一監(jiān)聽線程循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入的第一監(jiān)聽子單元521。任務(wù)添加單元53當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列。第二監(jiān)聽單元M循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入。第二監(jiān)聽單元 M可以包括用于調(diào)用第二監(jiān)聽線程循環(huán)監(jiān)聽第二預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入的第二監(jiān)聽子單元Ml。任務(wù)處理單元55當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。實施例六在本發(fā)明實施例中,采用線程池執(zhí)行定時器任務(wù),從而防止了頻繁的線程創(chuàng)建與銷毀引起的大量系統(tǒng)資源浪費,使得更多的CPU時間和內(nèi)存用來處理實際的定時器任務(wù) (例如,商業(yè)應(yīng)用)。圖6示出了本發(fā)明實施例六提供的定時器任務(wù)自動處理系統(tǒng)的結(jié)構(gòu),為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分,其中包括第一監(jiān)聽單元61循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。任務(wù)添加單元62當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列。第二監(jiān)聽單元63循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入。任務(wù)處理單元64當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。任務(wù)處理子單元641當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池,控制線程池執(zhí)行所述定時器任務(wù)。在本發(fā)明實施例中,當(dāng)線程池的緩存隊列未滿時,如果線程池的緩存隊列為空,則可以喚醒一個休眠的線程立即執(zhí)行該定時器任務(wù),如果線程池的緩存隊列不為空,則將定時器任務(wù)添加緩沖隊列,等待被執(zhí)行,當(dāng)排在其前方的定時器任務(wù)被執(zhí)行完成時,則執(zhí)行該任務(wù)。判斷子單元642判斷線程池的緩存隊列是否已滿。監(jiān)聽阻塞子單元643當(dāng)線程池緩存隊列已滿時,阻塞第二預(yù)設(shè)隊列的監(jiān)聽。任務(wù)寫入單元65當(dāng)處理進(jìn)入的定時器任務(wù)失敗時,將定時器任務(wù)寫入第三預(yù)設(shè)隊列中。本發(fā)明實施例對第一預(yù)設(shè)隊列進(jìn)行循環(huán)監(jiān)聽,當(dāng)監(jiān)聽到有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列,同時,循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入,當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到線程池,由線程池中的線程進(jìn)行執(zhí)行,從而大大減少線程的創(chuàng)建和銷毀次數(shù),提高了任務(wù)的并發(fā)處理能力,進(jìn)而提高了系統(tǒng)資源的利用率和用戶體驗。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種定時器任務(wù)自動處理方法,其特征在于,所述方法包括下述步驟 循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到第二預(yù)設(shè)隊列;循環(huán)監(jiān)聽所述第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入的步驟之前,所述方法還包括創(chuàng)建第一監(jiān)聽線程和第二監(jiān)聽線程;所述循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入的步驟具體為調(diào)用所述第一監(jiān)聽線程循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入; 所述循環(huán)監(jiān)聽第二預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入的步驟具體為 調(diào)用所述第二監(jiān)聽線程循環(huán)監(jiān)聽第二預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。
3.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)的步驟具體為當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將所述定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池,控制所述線程池執(zhí)行所述定時器任務(wù)。
4.如權(quán)利要求3所述的方法,其特征在于,將所述定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池的步驟之后,控制所述線程池執(zhí)行所述定時器任務(wù)的步驟之前,所述方法還包括判斷所述線程池的緩存隊列是否已滿;當(dāng)所述線程池緩存隊列已滿時,阻塞所述第二預(yù)設(shè)隊列的監(jiān)聽;當(dāng)所述線程池緩存隊列未滿時,執(zhí)行控制所述線程池執(zhí)行所述定時器任務(wù)的步驟。
5.如權(quán)利要求1或4所述的方法,其特征在于,所述當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)的步驟之后,所述方法還包括當(dāng)處理進(jìn)入的定時器任務(wù)失敗時,將所述定時器任務(wù)寫入第三預(yù)設(shè)隊列中。
6.一種定時器任務(wù)自動處理系統(tǒng),其特征在于,所述系統(tǒng)包括第一監(jiān)聽單元,用于循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入; 任務(wù)添加單元,用于當(dāng)監(jiān)聽到第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將所述定時器任務(wù)添加到第二預(yù)設(shè)隊列;第二監(jiān)聽單元,用于循環(huán)監(jiān)聽第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入;以及任務(wù)處理單元,用于當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括 線程創(chuàng)建單元,用于創(chuàng)建第一監(jiān)聽線程和第二監(jiān)聽線程;所述第一監(jiān)聽單元包括第一監(jiān)聽子單元,用于調(diào)用所述第一監(jiān)聽線程循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入;所述第二監(jiān)聽單元包括第二監(jiān)聽子單元,用于調(diào)用所述第二監(jiān)聽線程循環(huán)監(jiān)聽第二預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述任務(wù)處理單元包括任務(wù)處理子單元,用于當(dāng)監(jiān)聽到第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將定時器任務(wù)添加到預(yù)先創(chuàng)建的線程池,控制所述線程池執(zhí)行所述定時器任務(wù)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述任務(wù)處理單元還包括 判斷子單元,用于判斷所述線程池的緩存隊列是否已滿;監(jiān)聽阻塞子單元,用于當(dāng)所述線程池緩存隊列已滿時,阻塞所述第二預(yù)設(shè)隊列的監(jiān)聽。
10.如權(quán)利要求6或9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括任務(wù)寫入單元,用于當(dāng)處理進(jìn)入的定時器任務(wù)失敗時,將所述定時器任務(wù)寫入第三預(yù)設(shè)隊列中。
全文摘要
本發(fā)明適用于計算機(jī)技術(shù)領(lǐng)域,提供了一種定時器任務(wù)自動處理方法及系統(tǒng),所述方法包括下述步驟循環(huán)監(jiān)聽第一預(yù)設(shè)隊列中是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第一預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,將所述定時器任務(wù)添加到第二預(yù)設(shè)隊列;循環(huán)監(jiān)聽所述第二預(yù)設(shè)隊列是否有定時器任務(wù)進(jìn)入;當(dāng)監(jiān)聽到所述第二預(yù)設(shè)隊列中有定時器任務(wù)進(jìn)入時,調(diào)用對應(yīng)的線程處理進(jìn)入的定時器任務(wù)。本發(fā)明解決了現(xiàn)有技術(shù)無法實現(xiàn)定時器任務(wù)并發(fā)處理,系統(tǒng)資源的利用率低的問題,通過調(diào)用對應(yīng)的線程對定時器任務(wù)進(jìn)行處理,提高了任務(wù)的并發(fā)處理能力,進(jìn)而提高了系統(tǒng)資源的利用率。
文檔編號G06F9/48GK102426539SQ20111034170
公開日2012年4月25日 申請日期2011年11月1日 優(yōu)先權(quán)日2011年11月1日
發(fā)明者徐波, 李坤保, 肖海濤 申請人:深圳市航天泰瑞捷電子有限公司