<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

    J2ME中實現多線程技術總結

    ?? ???????? 聲明:本文出自即興詩人blogjava博客,如需轉載,必須與作者聯系improviser@163.com!?
    ???????? 我們知道,在操作系統級別上軟件的運行一般都是以進程為單位,而在每個進程的運行過程中允許同時并發執行多個不同線程,這就使得一個程序能同時執行不同的操作。使用多線程的目的是為了最大限度地利用計算機CPU資源。JAVA程序字節碼最終是在JVM虛擬機下運行的,同一虛擬機進程中的不同操作都是通過多線程來運行的。在JAVA虛擬機中,線程常用有單線程和多線程,單線程指程序執行過程只是一個有效操作的序列,不同操作都有著明確的先后順序;而多線程允許同時進行著不同的操作,這些不同的操作同時并發進行著,并由CPU時鐘頻率根據不同的調度方式對他們進行執行調度。
    ???????? 在JAVA語言中提供了豐富的多線程操縱接口,提供了各類不同的線程實現方法供我們選擇,功能非常強大。在手機軟件設計中,由于同樣需要執行網絡連接(基于HTTP的高級Internet協議通訊)、UI調度等待、UI顯示幻化、游戲控制等操作需要通過后臺的數據運算或UI不斷更新等操作。因此在J2ME中,KVM虛擬機也提供了功能強大的多線程API,使我們同樣能在J2ME中實現線程的并發運算。
    ???????? 在J2ME中,主要有以下三種方法實現多線程。
    ?????????一、繼承Thread類(java.lang.Thread)
    ?????????通過編寫線程類繼承Thread類并重寫Thread類中的run()方法實現線程,當線程對象被運行時候將會自動執行run方法中的實體內容,從而開辟一個單獨的線程并運行起來。
    ?????????如:public class ThreadSimple extends Thread{
    ??????????????????public ThreadSimple()
    ??????????????????{
    ????????????????????????//constructor
    ???????????????????}
    ??????????????????public void run()
    ??????????????????{
    ????????????????????????//run code?entity
    ??????????????????}
    ?????????}
    ?????????線程實例使用,直接創建對象并調用start()方法即可運行線程。
    ?????????new ThreadSimple().start();
    ?????????當執行start方法時候,將會自動運行run方法,但是執行start方法時候只做了一件事,就是將線程轉化為可執行狀態,然后等待操作系統進行調度并運行,因此無法保證線程能立即啟動。在JAVA中,Thread類實現了Runnable接口,因此run方法是通過實現接口Runnable中的抽象方法。

    ?????????二、直接實現Runnable多線程接口(java.lang.Runnable)
    ?????????線程接口Runnable中只有一個抽象方法run,通過實現Runnable接口中的方法的類即可創建出有多線程特征的對象,但該對象并無法使其啟動線程,需要作為參數并借助Thread的構造方法構造創建對象并調用start方法對線程進行啟動。
    ?????????如:public class RunnablSimple implements Runnable{
    ??????????????????public?RunnableSimple()
    ??????????????????{
    ?????????????????????????//constructor
    ??????????????????}
    ??????????????????public void run(){
    ????????????????????????//run code?entity
    ???????????????}
    ??????}
    ??????實現類型的對象使用:
    ??????RunnableSimple rs?= new RunnableSimple();
    ??????new Thread(rs).start();
    ??????由此可見,以上兩種方法都是通過Thread的start來啟動線程的,實際上所有的線程操作都是封裝在Thread這個類中,由Thread對象調用各種接口來控制線程。???
    ??????J2ME中線程中主要方法:
    ??????void setPriority(int newPriority),設置線程優先級,在操作系統中線程的調度是不確定性的,可以通過該方法設置相應線程的優先級別。
    ??????static void sleep(long millis) ,線程中靜態方法,用于讓線程進入休眠狀態,執行該方法將會讓線程在指定時間millis毫秒內休眠。
    ??????void start(),使現在進入可執行狀態。
    ??????void run() ,線程執行主體。
    ??????void join(),等待該線程終止。
    ??????boolean isAlive(),用于判斷線程是否出于Alive狀態。
    ??????static void yield() ,盡量讓其他線程先執行。

    ?????????三、使用任務組合實現多線程
    ??????在J2ME中,同樣具有JAVA中的任務處理組合類,他們分別為Timer和TimerTask,可以使用他們實現多線程,簡單說就是定時實現任務。
    ??????Timer是JAVA中的一個定時器,可以實現在某一時間做某件事或者在某一時間段做某些事,分別通過方法schedule(TimerTask tt,long millis)和schedule(TimerTask tt,long start,long off)。
    ??????TimerTask是一個任務類,通過繼承該類并覆蓋方法run即可創建一個任務。
    ??????如:public class TimerTaskS extends TimerTask{
    ???????????????public TimerTaskS(){
    ?????????????????????//constructor
    ???????????????}
    ???????????????public void run(){
    ??????????????????? //run code?entity
    ?????????}
    ??????}
    ????? 任務調用:
    ??????Timer timer = new Timer();
    ???? ? //3秒鐘后執行任務
    ??????timer.schedule(new TimerTaskS(),3000);?????
    ????? ?//3秒鐘后執行任務并且之后每5秒鐘執行一次??
    ????? timer.schedule(new TimerTaskS(),3000,5000);
    ????? 有此可見在使用計時任務可以達到實現線程的效果,分別執行不同的并發操作,通過Timer類對象來操作TimerTask對象,通過schedule方法來計時執行任務,在結束任務的時候,通常使用cancel()來實現。

    ??????通常情況下,在J2ME軟件中我們通過手機按鍵來觸發一系列相應的操作,在程序響應處理過程中較多會涉及網絡操作、數據存儲等相對消耗時間和資源的操作,而這些操作往往需要一定的時間才能完成,因此在處理按鍵響應過程中通常我們需要建立線程處理,避免程序出現死機現象。
    ??????public void commandAction(Command c, Displayable s) {
     if(c==do1Com){
      //創建實現接口線程
      new Thread(new RunnableSimple()).start();
     }
     else if(c==do2Com){
      //創建繼承Thread線程
    ??????? new ThreadSimple().start();
     }
    ???? else{
    ???????//創建任務線程
    ???????new Timer().schedule(new TimerTaskS(),3000,20);
    ?? }
    }
    聲明:本文出自即興詩人blogjava博客,如轉載必須與作者聯系improviser@163.com!?

    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2009-03-17 02:44 poetguo 閱讀(2749) 評論(2)  編輯  收藏 所屬分類: JAVAJ2ME

    評論

    # Unikal'Nyi Kontent 2009-05-18 11:28 Unikal'Nyi Kontent

    Sorry. Over the years your bodies become walking autobiographies, telling friends and strangers alike of the minor and major stresses of your lives.
    I am from East and now teach English, give true I wrote the following sentence: "On. Th I will be doing a free seo webinar about measuing the roi from organic search.Contact us search engine optimization seo is an internet marketing strategy that."

    Thanks :-). Pascha.  回復  更多評論   

    # re: J2ME中實現多線程技術總結[未登錄] 2009-08-09 11:11 abc

    very good artical,thanks a lot!  回復  更多評論   

    主站蜘蛛池模板: 午夜性色一区二区三区免费不卡视频 | 国产亚洲精品VA片在线播放| 久久精品成人免费网站| 亚洲最大av无码网址| 黄床大片30分钟免费看| 免费欧洲美女牲交视频| 免费国产a理论片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲精品NV久久久久久久久久| 国产成人亚洲精品91专区高清| 四虎免费影院4hu永久免费| 国产成人亚洲精品播放器下载| 免费少妇a级毛片| 深夜久久AAAAA级毛片免费看| 亚洲精品无码99在线观看 | 国产又黄又爽胸又大免费视频| 久久青青草原亚洲av无码| 大妹子影视剧在线观看全集免费 | 亚洲国产精品第一区二区| 51在线视频免费观看视频| 亚洲高清视频在线| 国产成人免费一区二区三区| 羞羞视频在线观看免费| 亚洲AV中文无码字幕色三| AV无码免费永久在线观看| 亚洲6080yy久久无码产自国产| 免费一级一片一毛片| 国产精品免费看久久久| 亚洲一区二区免费视频| 国产精品免费视频网站| 免费无码又爽又刺激高潮软件| 久久精品国产亚洲AV无码偷窥| AV大片在线无码永久免费| 亚洲国产av玩弄放荡人妇| 怡红院亚洲怡红院首页| www视频在线观看免费| 免费国产a理论片| 亚洲午夜久久久精品电影院| 免费a级毛片18以上观看精品| 亚欧免费一级毛片| 久久精品熟女亚洲av麻豆|