專利名稱:一種Java軟件運(yùn)行的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式技術(shù)領(lǐng)域,特別涉及一種Java軟件運(yùn)行的方法和裝置。
背景技術(shù):
目前Java軟件已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,尤其是無(wú)線移動(dòng)終端領(lǐng) 域,全球大多數(shù)移動(dòng)運(yùn)營(yíng)商已經(jīng)推出了 Java下載服務(wù)。無(wú)線手持設(shè)備市場(chǎng)對(duì) Java產(chǎn)生了巨大的需求增長(zhǎng),目前幾乎所有移動(dòng)終端都支持Java。
逐漸擴(kuò)大的消費(fèi)群體,使得運(yùn)營(yíng)商、內(nèi)容提供商以及移動(dòng)終端制造商都強(qiáng) 烈渴望Java性能更加強(qiáng)勁,支持更多更復(fù)雜的應(yīng)用,為用戶帶來(lái)更豐富多彩的 增值應(yīng)用,滿足各種各樣的信息需求。
目前Java虛擬機(jī)在運(yùn)行Java軟件時(shí),需要在設(shè)定的時(shí)間完成對(duì)應(yīng)的事件, 比如lms刷新一次屏幕,這是通過(guò)應(yīng)用級(jí)定時(shí)器實(shí)現(xiàn),具體步驟包括
1) Java虛擬機(jī)確定需要定時(shí)器的時(shí)間,向移植層發(fā)送一個(gè)包含時(shí)間的計(jì) 時(shí)信號(hào)。
2) 移植層將該計(jì)時(shí)信號(hào)發(fā)送給應(yīng)用開(kāi)發(fā)平臺(tái)。
3) 應(yīng)用開(kāi)發(fā)平臺(tái)將該計(jì)時(shí)信號(hào)發(fā)送給嵌入式才喿作系統(tǒng)。
4) 嵌入式操作系統(tǒng)根據(jù)該計(jì)時(shí)信號(hào)中的時(shí)間進(jìn)行計(jì)時(shí),在時(shí)間到達(dá)后向 應(yīng)用開(kāi)發(fā)平臺(tái)發(fā)送到時(shí)信號(hào)。
5) 應(yīng)用開(kāi)發(fā)平臺(tái)收到該到時(shí)信號(hào)后,生成觸發(fā)事件信號(hào),并發(fā)送給移植層。
6 )移植層將收到的該觸發(fā)事件信號(hào)發(fā)送給Java虛擬機(jī)。 7) Java虛擬機(jī)在收到該觸發(fā)事件信號(hào)后,執(zhí)行相應(yīng)的事件。 如果應(yīng)用開(kāi)發(fā)平臺(tái)需要處理多個(gè)信號(hào)(由其他軟件或應(yīng)用程序產(chǎn)生的信
號(hào)),這是就需要將收到的信號(hào)加入到隊(duì)列中, 一個(gè)一個(gè)進(jìn)行處理,所以對(duì)于
步驟3中的應(yīng)用開(kāi)發(fā)平臺(tái)發(fā)送時(shí)間信號(hào)和步驟5中的應(yīng)用開(kāi)發(fā)平臺(tái)生成觸發(fā)事 件信號(hào)會(huì)造成嚴(yán)重的時(shí)延,這樣對(duì)于后續(xù)的步驟在時(shí)間上都會(huì)造成影響,從而 直接影響到Java虛擬機(jī)執(zhí)行事件的時(shí)間。
綜上所述,目前在運(yùn)行Java軟件時(shí),需要應(yīng)用級(jí)定時(shí)器進(jìn)行定時(shí),從而給 Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)嚴(yán)重的時(shí)延。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種Java軟件運(yùn)行的方法和裝置,用以解決現(xiàn)有技術(shù)中 存在的在運(yùn)行Java軟件時(shí),需要應(yīng)用級(jí)定時(shí)器進(jìn)行定時(shí),從而給Java虛擬機(jī) 執(zhí)行相應(yīng)的事件帶來(lái)嚴(yán)重時(shí)延的問(wèn)題。
本發(fā)明實(shí)施例提供的一種Java軟件運(yùn)行的方法包括
移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層;
所述操作層在所述時(shí)間到達(dá)后,通知所述移植層;
所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任 務(wù)信號(hào)發(fā)送給Java虛擬機(jī);
所述Java虛擬機(jī)在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。
本發(fā)明實(shí)施例提供的一種Java軟件運(yùn)行的系統(tǒng)包括
移植器,用于將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作器,在 確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java 虛擬機(jī);
操作器,用于在所述時(shí)間到達(dá)后,通知所述移植器; Java虛擬機(jī),用于在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。 本發(fā)明實(shí)施例提供的一種移植器包括
第一發(fā)送模塊,用于將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作
器;
生成模塊,用于在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào); 第二發(fā)送模塊,用于將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī)。 本發(fā)明實(shí)施例移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操 作層;所述操作層在所述時(shí)間到達(dá)后,通知所述移植層;所述移植層在確定所 述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī); 所述Java虛擬機(jī)在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。由于在運(yùn)行Java 軟件時(shí),采用系統(tǒng)級(jí)定時(shí)器進(jìn)行定時(shí),不需要應(yīng)用開(kāi)發(fā)平臺(tái)進(jìn)行處理,從而減 少了 Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)的時(shí)延,提高了用戶體驗(yàn)。
圖1為本發(fā)明實(shí)施例Java軟件運(yùn)行的系統(tǒng)結(jié)構(gòu)示意圖2為本發(fā)明實(shí)施例移植器的結(jié)構(gòu)示意圖3為本發(fā)明實(shí)施例Java軟件運(yùn)行的方法流程示意圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送直接 給操作層;操作層在時(shí)間到達(dá)后,通知移植層;移植層再向Java虛擬機(jī)發(fā)送觸 發(fā)任務(wù)信號(hào),通知Java虛擬機(jī)進(jìn)行任務(wù)處理,由于不需要應(yīng)用開(kāi)發(fā)平臺(tái)進(jìn)行處 理,從而減少了 Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)的時(shí)延。
下面結(jié)合說(shuō)明書附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
如圖1所示,本發(fā)明實(shí)施例Java軟件運(yùn)行的系統(tǒng)包括移植器10、操作 器20和Java虛擬機(jī)30。
移植器10,用于將來(lái)自Java虛擬機(jī)30的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作 器20,在確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將該觸發(fā)任 務(wù)信號(hào)發(fā)送給Java虛擬機(jī)30。
在具體實(shí)施過(guò)程中,移植器10在收到來(lái)自操作器20的到時(shí)信號(hào)后,確定
計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá),并生成觸發(fā)任務(wù)信號(hào);
如果Java軟件運(yùn)行的系統(tǒng)支持多線程,則移植器IO還可以在收到來(lái)自Java 虛擬機(jī)30的包含時(shí)間的計(jì)時(shí)信號(hào)后,為該計(jì)時(shí)信號(hào)生成一個(gè)睡眠線程(可以 將該睡眠線程設(shè)置在移植器10中;也可以設(shè)置在移植器10外,但需要保證移 植器IO能夠查看該睡眠線程),并為該睡眠線程分配一個(gè)線程標(biāo)識(shí),將該線程 標(biāo)識(shí)置于該計(jì)時(shí)信號(hào)中,向操作器20發(fā)送,這樣移植器IO需要查看睡眠線程 是否被觸發(fā)(即睡眠線程是否被喚醒),并在睡眠進(jìn)程被觸發(fā)后,確定計(jì)時(shí)信 號(hào)包含的時(shí)間到達(dá),并生成觸發(fā)任務(wù)信號(hào)。
如果設(shè)置睡眠線程,移植器10只需要在睡眠線程被喚醒時(shí)生成觸發(fā)任務(wù) 信號(hào),而在等待的這段時(shí)間可以處理其它線程,從而提高了移植器IO運(yùn)行效率。
需要說(shuō)明的是,本實(shí)施例移植器10確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)并不局 限于上述兩種,任何能夠讓移植器10確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)的方式都 適用本實(shí)施例。
操作器20,用于在收到來(lái)自移植器10的包含時(shí)間的計(jì)時(shí)信號(hào)后,開(kāi)始計(jì) 時(shí),在時(shí)間到達(dá)后,通知移植器10。
在具體實(shí)施過(guò)程中,如果操作器20收到的計(jì)時(shí)信號(hào)中還包含線程標(biāo)識(shí), 則操作器20在時(shí)間到達(dá)后,觸發(fā)線程標(biāo)識(shí)對(duì)應(yīng)的睡眠線程(即喚醒睡眠線程), 比如發(fā)送一個(gè)喚醒信號(hào);
如果操作器20收到的計(jì)時(shí)信號(hào)中不包含線程標(biāo)識(shí),則操作器20在時(shí)間到 達(dá)后,生成到時(shí)信號(hào),并將該到時(shí)信號(hào)發(fā)送給移植器10。
Java虛擬機(jī)30,用于在收到來(lái)自移植器10的觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù) 處理。
在具體實(shí)施過(guò)程中,進(jìn)行的任務(wù)處理是與發(fā)送的包含時(shí)間的計(jì)時(shí)信號(hào)有關(guān) 的,比如Java虛擬機(jī)30需要在10ms后進(jìn)行刷屏,則計(jì)時(shí)信號(hào)中包含的時(shí)間 為10ms,在收到觸發(fā)任務(wù)信號(hào)后,進(jìn)行刷屏處理;
Java虛擬機(jī)30需要在20ms后發(fā)送一信號(hào),則計(jì)時(shí)信號(hào)中包含的時(shí)間為 20ms,在收到觸發(fā)任務(wù)信號(hào)后,發(fā)送該信號(hào)。
如果Java虛擬機(jī)30進(jìn)行的任務(wù)處理需要讀取移植器中的代碼,則述Java 虛擬機(jī)30在收到觸發(fā)任務(wù)信號(hào)后,確定移植器10中處于激活狀態(tài)的代碼,并 讀取處于激活狀態(tài)的代碼進(jìn)行任務(wù)處理。
由于移植器10中的代碼包括運(yùn)行代碼和調(diào)試代碼,而調(diào)試代碼是編程人 員需要對(duì)Java軟件進(jìn)行調(diào)試時(shí)才需要用到的,對(duì)于Java虛擬機(jī)30在運(yùn)行Java 軟件是沒(méi)有任何用處。
而目前的處理方式是將移植器10中的調(diào)試代碼保留或刪除,如果保留調(diào) 試代碼,不會(huì)影響Java虛擬機(jī)30正常運(yùn)行Java軟件,但是Java虛擬機(jī)也會(huì) 讀取調(diào)試代碼,這樣就會(huì)造成Java虛擬機(jī)30讀取和處理速度降低;如果刪除 調(diào)試代碼,編程人員在需要對(duì)Java軟件進(jìn)行調(diào)試時(shí)必須在手動(dòng)輸入所有的調(diào)試 代碼。
本實(shí)施例對(duì)移植器10中的代碼設(shè)置狀態(tài),即將運(yùn)行代碼設(shè)置為激活狀態(tài), 將調(diào)試代碼設(shè)置為鎖定狀態(tài),Java虛擬機(jī)30只需要讀取處于激活狀態(tài)的代碼, 從而提高了 Java虛擬機(jī)3 0讀取和處理速度;在調(diào)試人員需要進(jìn)行調(diào)試時(shí),只 需要將調(diào)試代碼設(shè)置從鎖定狀態(tài)設(shè)置為激活狀態(tài)即可。
如圖2所示,本發(fā)明實(shí)施例移植器包括第一發(fā)送模塊100、生成模塊110 和第二發(fā)送模塊120。
第一發(fā)送模塊IOO,用于將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給 操作器。
生成模塊IIO,用于在確定時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào)。 第二發(fā)送模塊120,用于將生成模塊110生成的觸發(fā)任務(wù)信號(hào)發(fā)送給Java 虛擬才幾。
其中,生成模塊IIO可以根據(jù)收到的到時(shí)信號(hào)確定時(shí)間到達(dá),還可以根據(jù) 睡眠進(jìn)程被觸發(fā)確定時(shí)間到達(dá)。如杲生成模塊110根據(jù)收到的到時(shí)信號(hào)確定時(shí)間到達(dá),則生成模塊110還
可以進(jìn)一步包括接收模塊1100和第一信號(hào)生成模塊1110。 接收模塊1100,用于接收來(lái)自操作層的到時(shí)信號(hào)。
第一信號(hào)生成才莫塊1110,用于在接收模塊1100收到到時(shí)信號(hào)后,生成觸 發(fā)任務(wù)信號(hào)。
如果生成模塊110根據(jù)睡眠進(jìn)程被觸發(fā)確定時(shí)間到達(dá),則第一發(fā)送模塊 100還可以進(jìn)一步包括處理模塊1000和封裝模塊1010。
處理;漠塊1000,用于為收到的包含時(shí)間的計(jì)時(shí)信號(hào)生成一個(gè)睡眠線程,并 為該睡眠線程分配線程標(biāo)識(shí)。
封裝模塊1010,用于將線程標(biāo)識(shí)置于收到的計(jì)時(shí)信號(hào)中,向操作器發(fā)送。
則生成模塊110還可以進(jìn)一步包括查看模塊1120和第二信號(hào)生成模塊 1130。
查看模塊1120,用于查看處理模塊1000生成的睡眠線程是否被觸發(fā)。 第二信號(hào)生成沖莫塊1130,用于在查看才莫塊1120確定睡眠線程被觸發(fā)后,
生成觸發(fā)任務(wù)信號(hào)。
需要說(shuō)明的是,本實(shí)施例移植器確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)并不局限于
上述兩種,任何能夠讓移植器確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)的方式都適用本實(shí)施例。
如圖3所示,本發(fā)明實(shí)施例Java軟件運(yùn)行的方法包括下列步驟 步驟300、移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層。 步驟301、操作層在收到來(lái)自移植層的包含時(shí)間的計(jì)時(shí)信號(hào)后,開(kāi)始計(jì)時(shí),
在時(shí)間到達(dá)后,通知移植層。
步驟302、移植層在確定時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將觸發(fā)任務(wù)
信號(hào)發(fā)送給Java虛擬才幾。
步驟303、 Java虛擬機(jī)在收到來(lái)自移植層的觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。
在具體實(shí)施過(guò)程中,進(jìn)行的任務(wù)處理是與發(fā)送的包含時(shí)間的計(jì)時(shí)信號(hào)有關(guān)
的,比如Java虛擬機(jī)需要在10ms后進(jìn)行刷屏,則計(jì)時(shí)信號(hào)中包含的時(shí)間為 10ms,在收到觸發(fā)任務(wù)信號(hào)后,進(jìn)行刷屏處理;
Java虛擬機(jī)需要在20ms后發(fā)送一信號(hào),則計(jì)時(shí)信號(hào)中包含的時(shí)間為20ms, 在收到觸發(fā)任務(wù)信號(hào)后,發(fā)送該信號(hào)。
如果Java虛擬機(jī)進(jìn)行的任務(wù)處理需要讀取移植器中的代碼,則述Java虛 擬機(jī)在收到觸發(fā)任務(wù)信號(hào)后,確定移植層中處于激活狀態(tài)的代碼,并讀取處于 激活狀態(tài)的代碼進(jìn)行任務(wù)處理。
其中,步驟302中,移植層可以根據(jù)收到的到時(shí)信號(hào)確定時(shí)間到達(dá),還可 以根據(jù)睡眠進(jìn)程^皮觸發(fā)確定時(shí)間到達(dá)。
如果步驟302中,根據(jù)收到的到時(shí)信號(hào)確定時(shí)間到達(dá),則步驟301還可以 進(jìn)一步包括
操作層在時(shí)間到達(dá)后,生成到時(shí)信號(hào),并將到時(shí)信號(hào)發(fā)送給移植層。 則步驟302還可以進(jìn)一步包括
移植層在收到來(lái)自操作層的到時(shí)信號(hào)后,確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá), 并生成觸發(fā)任務(wù)信號(hào),將該觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī)。
如果步驟302中,根據(jù)睡眠進(jìn)程被觸發(fā)確定時(shí)間到達(dá),則步驟300還可以 進(jìn)一步包括
移植層在收到來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)后,為收到的計(jì)時(shí)信 號(hào)生成一個(gè)睡眠線程,并為該睡眠線程分配線程標(biāo)識(shí),將該線程標(biāo)識(shí)置于計(jì)時(shí) 信號(hào)中,向操作層發(fā)送。
具體的,可以將該睡眠線程設(shè)置在移植層中;也可以設(shè)置在移植層外,但 需要保證移植層能夠查看該睡眠線程。
步驟301還可以進(jìn)一步包括
操作層在收到包含時(shí)間和線程標(biāo)識(shí)的計(jì)時(shí)信號(hào),在時(shí)間到達(dá)后,觸發(fā)線程 標(biāo)識(shí)對(duì)應(yīng)的睡眠線程(即喚醒睡眠線程),比如發(fā)送一個(gè)喚醒信號(hào)。
步驟302還可以進(jìn)一步包括
移植層在睡眠進(jìn)程被觸發(fā)(即喚醒睡眠被喚醒)后,確定計(jì)時(shí)信號(hào)包含的 時(shí)間到達(dá),并生成觸發(fā)任務(wù)信號(hào),將該觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī)。
如果設(shè)置睡眠線程,移植器10只需要在睡眠線程被喚醒時(shí)生成觸發(fā)任務(wù) 信號(hào),而在等待的這段時(shí)間可以處理其它線程,從而提高了移植器IO運(yùn)行效 率。
需要說(shuō)明的是,本實(shí)施例移植器確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)并不局限于 上述兩種,任何能夠讓移植器確定計(jì)時(shí)信號(hào)包含的時(shí)間到達(dá)的方式都適用本實(shí) 施例。
本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,可選地,它們可以用 計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì) 算裝置來(lái)執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
從上述實(shí)施例中可以看出本發(fā)明實(shí)施例移植層將來(lái)自Java虛擬機(jī)的包含 時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層;所述操作層在所述時(shí)間到達(dá)后,通知所述移才直 層;所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任 務(wù)信號(hào)發(fā)送給Java虛擬機(jī);所述Java虛擬機(jī)在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn) 行任務(wù)處理。由于在運(yùn)行Java軟件時(shí),采用系統(tǒng)級(jí)定時(shí)器進(jìn)行定時(shí),不需要應(yīng)
用開(kāi)發(fā)平臺(tái)進(jìn)行處理,從而減少了 Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)的時(shí)延,提 高了用戶體驗(yàn)。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種Java軟件運(yùn)行的方法,其特征在于,該方法包括移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層;所述操作層在所述時(shí)間到達(dá)后,通知所述移植層;所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī);所述Java虛擬機(jī)在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。
2、 如權(quán)利要求1所述的方法,其特征在于,所述操作層在所述時(shí)間到達(dá) 后,通知所述移植層包括所述操作層在所述時(shí)間到達(dá)后,生成到時(shí)信號(hào),并將所述到時(shí)信號(hào)發(fā)送給 所述移植層;所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào)包括 所述移植層在收到所述到時(shí)信號(hào)后,生成觸發(fā)任務(wù)信號(hào)。
3、 如權(quán)利要求l所述的方法,其特征在于,所述移植層將來(lái)自Java虛擬 機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層包括所述移植層為收到的包含時(shí)間的計(jì)時(shí)信號(hào)生成一個(gè)睡眠線程,并為所述睡 眠線程分配線程標(biāo)識(shí);所述移植層將所述線程標(biāo)識(shí)置于所述計(jì)時(shí)信號(hào)中,向所述操作層發(fā)送; 所述操作層在所述時(shí)間到達(dá)后,通知所述移植層包括 所述操作層在所述時(shí)間到達(dá)后,觸發(fā)所述線程標(biāo)識(shí)對(duì)應(yīng)的所述睡眠線程; 所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào)包括 所述移植層在所述睡眠線程被觸發(fā)后,生成觸發(fā)任務(wù)信號(hào)。
4、 如權(quán)利要求1-3任一權(quán)利要求所述的方法,其特征在于,所述Java 虛擬機(jī)進(jìn)行任務(wù)處理包括所述Java虛擬機(jī)確定所述移植層中處于激活狀態(tài)的代碼,并讀取所述處于 激活狀態(tài)的代碼進(jìn)行任務(wù)處理。
5、 一種Java軟件運(yùn)行的系統(tǒng),其特征在于,該系統(tǒng)包括移植器,用于將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作器,在 確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java 虛擬才幾;操作器,用于在所述時(shí)間到達(dá)后,通知所述移植器; Java虛擬機(jī),用于在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。
6、 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述操作器用于 在所述時(shí)間到達(dá)后,生成到時(shí)信號(hào),并將所述到時(shí)信號(hào)發(fā)送給所述移植器; 所述移植器用于所述移植器在收到所述到時(shí)信號(hào)后,生成觸發(fā)任務(wù)信號(hào)。
7、 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述移植器用于 為收到的包含時(shí)間的計(jì)時(shí)信號(hào)生成一個(gè)睡眠線程,并為所述睡眠線程分配線程標(biāo)識(shí),將所述線程標(biāo)識(shí)置于所述計(jì)時(shí)信號(hào)中,向所述操作器發(fā)送,在所述 睡眠線程被觸發(fā)后,生成觸發(fā)任務(wù)信號(hào); 所述操作器用于在所述時(shí)間到達(dá)后,觸發(fā)所述線程標(biāo)識(shí)對(duì)應(yīng)的所述睡眠線程。
8、 如權(quán)利要求5-7任一權(quán)利要求所述的系統(tǒng),其特征在于,所述Java 虛擬機(jī)用于在收到所述觸發(fā)任務(wù)信號(hào)后,確定所述移植器中處于激活狀態(tài)的代碼,并 讀取所述處于激活狀態(tài)的代碼進(jìn)行任務(wù)處理。
9、 一種移植器,其特征在于,該移植器包括第一發(fā)送模塊,用于將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作器;生成模塊,用于在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào); 第二發(fā)送模塊,用于將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī)。
10、 如權(quán)利要求9所述的移植器,其特征在于,所述生成模塊包括 接收模塊,用于接收來(lái)自所述操作器的到時(shí)信號(hào);第一信號(hào)生成模塊,用于在所述接收it塊收到所述到時(shí)信號(hào)后,生成觸發(fā) 任務(wù)信號(hào)。
11、如權(quán)利要求9所述的移植器,其特征在于,所述第一發(fā)送模塊包括 處理模塊,用于為收到的包含時(shí)間的計(jì)時(shí)信號(hào)生成一個(gè)睡眠線程,并為所 述睡眠線程分配線程標(biāo)識(shí);封裝模塊,用于將所述線程標(biāo)識(shí)置于所述計(jì)時(shí)信號(hào)中,向所述操作器發(fā)送; 所述生成模塊包括查看模塊,用于查看所述睡眠線程是否被觸發(fā);第二信號(hào)生成模塊,用于在所述查看模塊確定所述睡眠線程被觸發(fā)后,生 成觸發(fā)任務(wù)信號(hào)。
全文摘要
本發(fā)明涉及嵌入式技術(shù)領(lǐng)域,特別涉及一種Java軟件運(yùn)行的方法和裝置,用以解決現(xiàn)有技術(shù)中存在的在運(yùn)行Java軟件時(shí),需要應(yīng)用級(jí)定時(shí)器進(jìn)行定時(shí),從而給Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)嚴(yán)重時(shí)延的問(wèn)題。本發(fā)明實(shí)施例的方法包括移植層將來(lái)自Java虛擬機(jī)的包含時(shí)間的計(jì)時(shí)信號(hào)發(fā)送給操作層;所述操作層在所述時(shí)間到達(dá)后,通知所述移植層;所述移植層在確定所述時(shí)間到達(dá)后,生成觸發(fā)任務(wù)信號(hào),并將所述觸發(fā)任務(wù)信號(hào)發(fā)送給Java虛擬機(jī);所述Java虛擬機(jī)在收到所述觸發(fā)任務(wù)信號(hào)后,進(jìn)行任務(wù)處理。采用本發(fā)明實(shí)施例能夠減少Java虛擬機(jī)執(zhí)行相應(yīng)的事件帶來(lái)的時(shí)延,提高用戶體驗(yàn)。
文檔編號(hào)G06F9/48GK101354662SQ200810211850
公開(kāi)日2009年1月28日 申請(qǐng)日期2008年9月11日 優(yōu)先權(quán)日2008年9月11日
發(fā)明者張向軍 申請(qǐng)人:青島海信移動(dòng)通信技術(shù)股份有限公司