自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多線程技術(shù)在J2ME中的應用總結(jié)

開發(fā) 后端
下文介紹了如何在J2ME中使用多線程技術(shù)。JAVA語言中提供了豐富的多線程操縱接口,提供了各類不同的線程實現(xiàn)方法供我們選擇,功能非常強大。

我們知道,在操作系統(tǒng)級別上軟件的運行一般都是以進程為單位,而在每個進程的運行過程中允許同時并發(fā)執(zhí)行多個不同線程,這就使得一個程序能同時執(zhí)行不同的操作。使用多線程的目的是為了最大限度地利用計算機CPU資源。JAVA程序字節(jié)碼最終是在JVM虛擬機下運行的,同一虛擬機進程中的不同操作都是通過多線程來運行的。在JAVA虛擬機中,線程常用有單線程和多線程,單線程指程序執(zhí)行過程只是一個有效操作的序列,不同操作都有著明確的先后順序;而多線程允許同時進行著不同的操作,這些不同的操作同時并發(fā)進行著,并由CPU時鐘頻率根據(jù)不同的調(diào)度方式對他們進行執(zhí)行調(diào)度。

在JAVA語言中提供了豐富的多線程操縱接口,提供了各類不同的線程實現(xiàn)方法供我們選擇,功能非常強大。在手機軟件設計中,由于同樣需要執(zhí)行網(wǎng)絡連接(基于HTTP的高級Internet協(xié)議通訊)、UI調(diào)度等待、UI顯示幻化、游戲控制等操作需要通過后臺的數(shù)據(jù)運算或UI不斷更新等操作。因此在J2ME中,KVM虛擬機也提供了功能強大的多線程API,使我們同樣能在J2ME中實現(xiàn)線程的并發(fā)運算。

在J2ME中,主要有以下三種方法實現(xiàn)多線程。

一、繼承Thread類(java.lang.Thread)

通過編寫線程類繼承Thread類并重寫Thread類中的run()方法實現(xiàn)線程,當線程對象被運行時候?qū)詣訄?zhí)行run方法中的實體內(nèi)容,從而開辟一個單獨的線程并運行起來。

如:

public class ThreadSimple extends Thread{ 
public ThreadSimple()
{
//constructor
}
public void run()
{
//run code entity
}
}

 

線程實例使用,直接創(chuàng)建對象并調(diào)用start()方法即可運行線程。

new ThreadSimple()。start();當執(zhí)行start方法時候,將會自動運行run方法,但是執(zhí)行start方法時候只做了一件事,就是將線程轉(zhuǎn)化為可執(zhí)行狀態(tài),然后等待操作系統(tǒng)進行調(diào)度并運行,因此無法保證線程能立即啟動。在JAVA中,Thread類實現(xiàn)了Runnable接口,因此run方法是通過實現(xiàn)接口Runnable中的抽象方法。

二、直接實現(xiàn)Runnable多線程接口(java.lang.Runnable)

線程接口Runnable中只有一個抽象方法run,通過實現(xiàn)Runnable接口中的方法的類即可創(chuàng)建出有多線程特征的對象,但該對象并無法使其啟動線程,需要作為參數(shù)并借助Thread的構(gòu)造方法構(gòu)造創(chuàng)建對象并調(diào)用start方法對線程進行啟動。

如:

public class RunnablSimple implements Runnable{ 
public RunnableSimple()
{
//constructor
}
public void run(){
//run code entity
}
}

實現(xiàn)類型的對象使用:

RunnableSimple rs = new RunnableSimple(); 
new Thread(rs).start();

由此可見,以上兩種方法都是通過Thread的start來啟動線程的,實際上所有的線程操作都是封裝在Thread這個類中,由Thread對象調(diào)用各種接口來控制線程。

J2ME中線程中主要方法:void setPriority(int newPriority),設置線程優(yōu)先級,在操作系統(tǒng)中線程的調(diào)度是不確定性的,可以通過該方法設置相應線程的優(yōu)先級別。

static void sleep(long millis) ,線程中靜態(tài)方法,用于讓線程進入休眠狀態(tài),執(zhí)行該方法將會讓線程在指定時間millis毫秒內(nèi)休眠。

void start(),使現(xiàn)在進入可執(zhí)行狀態(tài)。

void run() ,線程執(zhí)行主體。

void join(),等待該線程終止。

boolean isAlive(),用于判斷線程是否出于Alive狀態(tài)。

static void yield() ,盡量讓其他線程先執(zhí)行。

三、使用任務組合實現(xiàn)多線程

在J2ME中,同樣具有JAVA中的任務處理組合類,他們分別為Timer和TimerTask,可以使用他們實現(xiàn)多線程,簡單說就是定時實現(xiàn)任務。

Timer是JAVA中的一個定時器,可以實現(xiàn)在某一時間做某件事或者在某一時間段做某些事,分別通過方法schedule(TimerTask tt,long millis)和schedule(TimerTask tt,long start,long off)。

TimerTask是一個任務類,通過繼承該類并覆蓋方法run即可創(chuàng)建一個任務。

如:

public class TimerTaskS extends TimerTask{ 
public TimerTaskS(){
//constructor
}
public void run(){
//run code entity
}
}

任務調(diào)用:

Timer timer = new Timer();
//3秒鐘后執(zhí)行任務
timer.schedule(new TimerTaskS(),3000);
//3秒鐘后執(zhí)行任務并且之后每5秒鐘執(zhí)行一次
timer.schedule(new TimerTaskS(),3000,5000);

有此可見在使用計時任務可以達到實現(xiàn)線程的效果,分別執(zhí)行不同的并發(fā)操作,通過Timer類對象來操作TimerTask對象,通過schedule方法來計時執(zhí)行任務,在結(jié)束任務的時候,通常使用cancel()來實現(xiàn)。

通常情況下,在J2ME軟件中我們通過手機按鍵來觸發(fā)一系列相應的操作,在程序響應處理過程中較多會涉及網(wǎng)絡操作、數(shù)據(jù)存儲等相對消耗時間和資源的操作,而這些操作往往需要一定的時間才能完成,因此在處理按鍵響應過程中通常我們需要建立線程處理,避免程序出現(xiàn)死機現(xiàn)象。

public void commandAction(Command c, Displayable s) { 
if(c==do1Com){
//創(chuàng)建實現(xiàn)接口線程
new Thread(new RunnableSimple()).start();
}
else if(c==do2Com){
//創(chuàng)建繼承Thread線程
new ThreadSimple().start();
}
else{
//創(chuàng)建任務線程
new Timer().schedule(new TimerTaskS(),3000,20);
}
}

【編輯推薦】

  1. 使用Eclipse開發(fā)J2ME手機應用程序
  2. 使用J2ME MMAPI開發(fā)移動多媒體應用技術(shù)
  3. J2ME中應用程序的內(nèi)存優(yōu)化
責任編輯:yangsai 來源: 網(wǎng)絡
相關(guān)推薦

2011-05-12 14:34:55

cookieJ2ME

2009-02-20 16:47:16

多線程網(wǎng)絡連接J2ME編程

2010-09-29 13:50:31

J2MEJ2SE

2010-10-09 15:40:19

CookieJ2ME

2010-09-29 08:57:04

J2ME前景

2010-09-28 16:05:36

J2ME技術(shù)J2MEWTK

2010-09-30 09:16:04

cookieJ2ME

2010-09-30 13:28:55

J2ME圖形

2010-09-30 12:53:00

J2MECSS

2010-10-09 15:58:36

J2ME圖形

2011-06-08 15:05:43

J2ME

2009-06-23 11:30:16

RMSJ2ME

2010-09-29 12:45:50

J2ME

2011-12-02 10:37:14

JavaJ2ME

2010-09-30 08:49:17

cookieJ2ME

2010-09-29 15:45:49

J2MEFontColor

2009-06-17 11:27:00

setClip方法J2ME

2009-06-30 15:49:00

J2ME編程

2010-09-30 09:56:26

J2ME Polish

2010-09-29 09:19:39

J2ME開發(fā)工具
點贊
收藏

51CTO技術(shù)棧公眾號