專利名稱:多線程軟件并發(fā)設(shè)計(jì)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種多線程軟件并發(fā)設(shè)計(jì)方法,特別是涉及一種基于UML技術(shù)的多線程軟件并發(fā)設(shè)計(jì)方法。
背景技術(shù):
現(xiàn)有技術(shù)中存在很多支持多線程的軟件平臺(tái),比如大唐ARENA,基于此平臺(tái)的軟件之間存在較復(fù)雜的同步、互斥關(guān)系。手機(jī)高層業(yè)務(wù)軟件部分與網(wǎng)絡(luò)交互也較多,而網(wǎng)絡(luò)編程一般采用異步、同步、阻塞、非阻塞四種調(diào)用方式。同時(shí)平臺(tái)將各種中斷以通道消息方式通知給上層軟件,例如合蓋、旋屏、PUSH消息、鬧鐘等。高層業(yè)務(wù)軟件部分如WAP、彩信、JAVA、流媒體大多采用第三方提供的LIB庫(kù),這些 API既有同步調(diào)用,也存在異步、非阻塞式回調(diào)操作。所有這些操作應(yīng)用都采用線程任務(wù)方式運(yùn)行。這些線程之間又存在一定的時(shí)序關(guān)系,處理不當(dāng)就會(huì)出現(xiàn)死機(jī)、黑屏、定屏、重啟等很嚴(yán)重的現(xiàn)象。其主要原因是軟件設(shè)計(jì)過程中沒有好的工具方法來設(shè)計(jì)各線程之間的同步、互斥關(guān)系。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中沒有好的方法來設(shè)計(jì)各線程之間的同步、互斥關(guān)系的缺陷,提供一種多線程軟件并發(fā)設(shè)計(jì)方法。本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的一種多線程軟件并發(fā)設(shè)計(jì)方法,其特點(diǎn)在于,其包括以下步驟S1、設(shè)計(jì)用戶界面泳道、下載線程泳道和Java虛擬機(jī)線程泳道;&、在下載線程泳道中通過瀏覽器下載Java應(yīng)用程序,在Java虛擬機(jī)線程泳道中通過回調(diào)方式將JAR的URL傳遞給瀏覽器;S3、在下載線程泳道中,瀏覽器下載JAR,下載完畢后調(diào)用第三方異步接口進(jìn)行 Java應(yīng)用程序的安裝。較佳地,步驟&中還包括如下步驟調(diào)用第三方虛擬機(jī)異步接口對(duì)下載的文件進(jìn)行合法性檢查。 較佳地,步驟&后還包括如下步驟安裝結(jié)束后將結(jié)果通過Notify消息通知給相應(yīng)的服務(wù)器。 較佳地,步驟&中,當(dāng)下載Java應(yīng)用程序時(shí),如果關(guān)機(jī)或者合蓋,則進(jìn)入初始化界較佳地,步驟&中,當(dāng)下載Java應(yīng)用程序時(shí),如果取消下載,則進(jìn)入瀏覽器界面。較佳地,步驟&中,當(dāng)下載Java應(yīng)用程序時(shí),如果有交互事件發(fā)生,則進(jìn)入其他應(yīng)用程序。本發(fā)明的積極進(jìn)步效果在于本發(fā)明的軟件并發(fā)設(shè)計(jì)方法首先將各線程劃分成不同的泳道,然后在泳道中設(shè)計(jì)各個(gè)泳道中要執(zhí)行的步驟,從而能夠很全面的設(shè)計(jì)出各線程之間的同步、互斥關(guān)系。避免了處理不當(dāng)就會(huì)出現(xiàn)死機(jī)、黑屏、定屏、重啟等很嚴(yán)重的現(xiàn)象。
圖Ia為本發(fā)明的線程同步方式描述圖,圖中為串行的情況。圖Ib為本發(fā)明的線程同步方式描述圖,圖中為并行的情況。圖Ic為本發(fā)明的線程同步方式描述圖,圖中為串、并行的情況。圖Id為本發(fā)明的線程同步方式描述圖,圖中為一般的情況。圖2為本發(fā)明的設(shè)計(jì)方法的流程圖,圖中示出了泳道的劃分。圖3為本發(fā)明的JAD下載狀態(tài)變遷圖。
具體實(shí)施例方式下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說明本發(fā)明的技術(shù)方案。如圖Ia-Id所示,首先介紹一下各種線程同步的方式,在一個(gè)程序的諸操作間,往往只要求部分有序,既有并行執(zhí)行部分,又有串行執(zhí)行部分。本實(shí)施例中,示出了采用UML 技術(shù)對(duì)一多線程軟件進(jìn)行同步時(shí)序關(guān)系設(shè)計(jì)的情形。圖中,‘S’和‘F’分別代表起始和結(jié)束,而P1-P7代表每一個(gè)線程。UML活動(dòng)圖可以包含并發(fā)線程的分叉控制。并發(fā)線程表示能被系統(tǒng)中的不同對(duì)象和人并發(fā)執(zhí)行的活動(dòng)。通常并發(fā)源于聚集,在聚集關(guān)系中每個(gè)對(duì)象有著它們自己的線程,這些線程可并發(fā)執(zhí)行。并發(fā)活動(dòng)可以同時(shí)執(zhí)行也可以順序執(zhí)行?;顒?dòng)圖不僅能夠表達(dá)順序流程控制還能夠表達(dá)并發(fā)流程控制。利用活動(dòng)圖模型描述執(zhí)行算法的工作流程中涉及的活動(dòng)。除此之外,還需要狀態(tài)模型來表示各個(gè)活動(dòng)狀態(tài)的狀態(tài)變遷。當(dāng)一個(gè)事件發(fā)生時(shí),它會(huì)觸發(fā)狀態(tài)間的轉(zhuǎn)換,導(dǎo)致對(duì)象從一種狀態(tài)轉(zhuǎn)化到另一新的狀態(tài)。與轉(zhuǎn)換相關(guān)的活動(dòng)執(zhí)行時(shí),轉(zhuǎn)換也同時(shí)發(fā)生。運(yùn)行中的線程狀態(tài)也會(huì)隨著到外界事件變化而變化,例如用戶在閱讀彩信時(shí),合蓋就需要退出;來 PUSH消息就需要首先響應(yīng)等等。如圖2所示,為本實(shí)施例中的多線程軟件并發(fā)設(shè)計(jì)方法,首先將活動(dòng)組織成用線分開的不同區(qū)域泳道(活動(dòng)模型中一種方法)表示初步分為U工(用戶界面)泳道、下載線程泳道、JVM線程泳道。步驟101 JAVA應(yīng)用程序(JAD)通過Browser下載,步驟102 下載結(jié)束后需要調(diào)用第三方虛擬機(jī)異步接口對(duì)下載的文件進(jìn)行合法性檢查,步驟103 檢查結(jié)束后通過回調(diào)方式將JARCJavaArchive,Java歸檔文件,是與平臺(tái)無關(guān)的文件格式,它允許將許多文件組合成一個(gè)壓縮文件)的URL傳遞給瀏覽器,其中JAR的URL存在于步驟101中下載的JAD中。步驟104 瀏覽器下載JAR,步驟105 下載結(jié)束后需要調(diào)用第三方異步接口進(jìn)行JAVA應(yīng)用程序的安裝。安裝結(jié)束后還可以將結(jié)果通過Notify消息通知給相應(yīng)的服務(wù)器。在此操作期間可能存在右軟鍵(即取消鍵)、合蓋、POWER鍵及其它由AMS (Application Managekrvice,應(yīng)用程序管理)統(tǒng)一管理的交互事件。通過上述步驟,不同泳道中的線程時(shí)序關(guān)系圖就非常明確,在編碼時(shí)可對(duì)照該圖進(jìn)行詳細(xì)的同步、互斥設(shè)計(jì),這樣就不會(huì)出現(xiàn)線程之間死鎖、定屏等嚴(yán)重問題。如果各個(gè)線程各種活動(dòng)狀態(tài)下如果有外部事件發(fā)生時(shí)就需要進(jìn)行第二步狀態(tài)變遷圖設(shè)計(jì)。圖3為針對(duì)不同泳道、不同活動(dòng)狀態(tài)分別分析其狀態(tài)變遷圖。例如下載線程正在下載JAD狀態(tài)時(shí),此狀態(tài)可能會(huì)有下載取消、合蓋、POWER(關(guān)機(jī))鍵以及其它外部事件發(fā)生, 此時(shí)通過該狀態(tài)變遷圖描述。圖中,當(dāng)下載Java應(yīng)用程序時(shí),如果關(guān)機(jī)或者合蓋,則進(jìn)入初始化界面。如果取消下載,則進(jìn)入瀏覽器界面。如果有交互事件發(fā)生,則進(jìn)入其他應(yīng)用程序。 圖中為符合本領(lǐng)域技術(shù)人員的習(xí)慣,有些術(shù)語用通用的英文簡(jiǎn)寫表示。在此解釋如下,IDLE 表示初始化界面,RSK表示取消下載,link表示鏈接。通過狀態(tài)變遷圖可以設(shè)計(jì)各種JAD下載此活動(dòng)狀態(tài)下各種事件處理過程,同時(shí)結(jié)合圖2中所示的活動(dòng)泳道圖中的時(shí)序關(guān)系,就可編寫全面且穩(wěn)健的實(shí)現(xiàn)代碼來滿足多線程之間的合理并發(fā)。雖然以上描述了本發(fā)明的具體實(shí)施方式
,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,其包括以下步驟S1、設(shè)計(jì)用戶界面泳道、下載線程泳道和Java虛擬機(jī)線程泳道;&、在下載線程泳道中通過瀏覽器下載Java應(yīng)用程序,在Java虛擬機(jī)線程泳道中通過回調(diào)方式將JAR的URL傳遞給瀏覽器;&、在下載線程泳道中,瀏覽器下載JAR,下載完畢后調(diào)用第三方異步接口進(jìn)行Java應(yīng)用程序的安裝。
2.如權(quán)利要求1所述的多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,步驟&中還包括如下步驟調(diào)用第三方虛擬機(jī)異步接口對(duì)下載的文件進(jìn)行合法性檢查。
3.如權(quán)利要求1所述的多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,步驟&后還包括如下步驟安裝結(jié)束后將結(jié)果通過Notify消息通知給相應(yīng)的服務(wù)器。
4.如權(quán)利要求1所述的多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,步驟&中,當(dāng)下載Java 應(yīng)用程序時(shí),如果關(guān)機(jī)或者合蓋,則進(jìn)入初始化界面。
5.如權(quán)利要求1所述的多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,步驟&中,當(dāng)下載Java 應(yīng)用程序時(shí),如果取消下載,則進(jìn)入瀏覽器界面。
6.如權(quán)利要求1所述的多線程軟件并發(fā)設(shè)計(jì)方法,其特征在于,步驟&中,當(dāng)下載Java 應(yīng)用程序時(shí),如果有交互事件發(fā)生,則進(jìn)入其他應(yīng)用程序。
全文摘要
本發(fā)明公開了一種多線程軟件并發(fā)設(shè)計(jì)方法,其包括以下步驟S1、設(shè)計(jì)用戶界面泳道、下載線程泳道和Java虛擬機(jī)線程泳道;S2、在下載線程泳道中通過瀏覽器下載Java應(yīng)用程序,在Java虛擬機(jī)線程泳道中通過回調(diào)方式將JAR的URL傳遞給瀏覽器;S3、在下載線程泳道中,瀏覽器下載JAR,下載完畢后調(diào)用第三方異步接口進(jìn)行Java應(yīng)用程序的安裝。本發(fā)明的軟件并發(fā)設(shè)計(jì)方法首先將各線程劃分成不同的泳道,然后在泳道中設(shè)計(jì)各個(gè)泳道中要執(zhí)行的步驟,從而能夠很全面的設(shè)計(jì)出各線程之間的同步、互斥關(guān)系。避免了處理不當(dāng)就會(huì)出現(xiàn)死機(jī)、黑屏、定屏、重啟等很嚴(yán)重的現(xiàn)象。
文檔編號(hào)G06F9/445GK102314335SQ201010220848
公開日2012年1月11日 申請(qǐng)日期2010年7月6日 優(yōu)先權(quán)日2010年7月6日
發(fā)明者劉美紅 申請(qǐng)人:上海晨興希姆通電子科技有限公司