成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

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

通過(guò)編寫(xiě)線程類繼承Thread類并重寫(xiě)Thread類中的run()方法實(shí)現(xiàn)線程,當(dāng)線程對(duì)象被運(yùn)行時(shí)候?qū)?huì)自動(dòng)執(zhí)行run方法中的實(shí)體內(nèi)容,從而開(kāi)辟一個(gè)單獨(dú)的線程并運(yùn)行起來(lái)。

如:

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

 

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

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

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

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

如:

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

實(shí)現(xiàn)類型的對(duì)象使用:

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

由此可見(jiàn),以上兩種方法都是通過(guò)Thread的start來(lái)啟動(dòng)線程的,實(shí)際上所有的線程操作都是封裝在Thread這個(gè)類中,由Thread對(duì)象調(diào)用各種接口來(lái)控制線程。

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

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

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

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

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

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

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

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

在J2ME中,同樣具有JAVA中的任務(wù)處理組合類,他們分別為T(mén)imer和TimerTask,可以使用他們實(shí)現(xiàn)多線程,簡(jiǎn)單說(shuō)就是定時(shí)實(shí)現(xiàn)任務(wù)。

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

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

如:

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

任務(wù)調(diào)用:

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

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

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

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

【編輯推薦】

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

2011-05-12 14:34:55

cookieJ2ME

2009-02-20 16:47:16

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

2010-10-09 15:40:19

CookieJ2ME

2010-09-29 13:50:31

J2MEJ2SE

2010-09-29 08:57:04

J2ME前景

2010-09-30 13:28:55

J2ME圖形

2010-09-30 09:16:04

cookieJ2ME

2010-09-28 16:05:36

J2ME技術(shù)J2MEWTK

2010-09-30 12:53:00

J2MECSS

2009-06-23 11:30:16

RMSJ2ME

2010-10-09 15:58:36

J2ME圖形

2010-09-29 12:45:50

J2ME

2011-06-08 15:05:43

J2ME

2011-12-02 10:37:14

JavaJ2ME

2009-06-30 15:49:00

J2ME編程

2010-09-29 15:45:49

J2MEFontColor

2010-09-30 08:49:17

cookieJ2ME

2009-06-17 11:27:00

setClip方法J2ME

2010-09-30 09:56:26

J2ME Polish

2010-09-29 09:19:39

J2ME開(kāi)發(fā)工具
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 午夜影院在线观看 | 日韩综合在线 | 国产精品我不卡 | 天天看天天爽 | 国产精品日日摸夜夜添夜夜av | 国产一区视频在线 | 好姑娘高清在线观看电影 | 视频一区二区在线观看 | av日韩一区 | 99福利 | 亚洲国产成人av好男人在线观看 | 一本色道久久综合亚洲精品高清 | 狠狠色综合网站久久久久久久 | 一区二区三区四区在线视频 | 久久久久久综合 | 色综合99 | 国产精品免费一区二区三区四区 | 亚洲一区二区三区视频 | 九久久| 亚洲高清视频在线 | 综合久久国产 | 亚洲免费在线 | 欧美一区二区在线观看 | 成人国产精品入口免费视频 | 偷牌自拍 | 高清国产午夜精品久久久久久 | 日韩精品一区二区三区在线观看 | 精品九九 | 亚洲精品日韩一区二区电影 | 网站黄色av | 蜜桃在线视频 | 国产精品一区网站 | 国产精品久久国产精品久久 | 亚洲免费在线观看 | 日韩一区二区三区视频在线播放 | 亚洲一区中文字幕 | 91看片网址| 日韩三区在线 | 成人免费激情视频 | 成人国产精品色哟哟 | 亚洲欧美一区二区三区国产精品 |