在J2ME中使用Timer和TimerTask來實(shí)現(xiàn)多線程_JSP教程
推薦:分割字符串以增強(qiáng)J2ME的String能力從JDK1.4以后,String類中新增了split方法來實(shí)現(xiàn)字符串的分割,但是在J2ME中卻沒有該方法(MIDP2.0中也沒有實(shí)現(xiàn)),但是在實(shí)際使用過程中,有些時(shí)候的確要用到這種操作,這里將我以前實(shí)
眾所周知,Java語言在語言的低層就支持多線程,在Java中可以使用兩種方式來實(shí)現(xiàn)多線程操作,這兩種方式依次是:
1、繼承Thread類
2、實(shí)現(xiàn)Runnable接口
但是Java語言中還有兩個(gè)類,可以組合來實(shí)現(xiàn)多線程的控制,這兩個(gè)類就是java.util包中的Timer和TimerTask類。和上面的實(shí)現(xiàn)方式相比,使用這種方式來實(shí)現(xiàn)多線程,可以很方便的開啟多個(gè)線程,并且代碼的結(jié)構(gòu)比較清晰,但是創(chuàng)建類的數(shù)量比較多,系統(tǒng)開銷稍微大一些。下面詳細(xì)進(jìn)行一下介紹:
Timer類是一個(gè)定時(shí)器,可以每隔一段固定的時(shí)間做一件事情,而且可以很方便的停止這些動作。依次為:
構(gòu)造對象: Timer timer = new Timer();
對象創(chuàng)建以后,可以使用其中的schedule或者是scheduleAtFixedRate方法起啟動一個(gè)任務(wù)(Task)動作。需要停止時(shí),可以調(diào)用Timer對象的cancel方法實(shí)現(xiàn),該方法可以停止該Timer啟動的所有任務(wù)(Task)。
TimerTask類是一個(gè)線程類,所有線程的動作代碼都寫在該類內(nèi)部。TimerTask是一個(gè)抽象類,在實(shí)際使用過程中,一般是繼承TimerTask類,然后實(shí)現(xiàn)實(shí)際的操作,停止TimerTask可以使用TimerTask對象里面的cancel方法。
下面是一個(gè)實(shí)現(xiàn)簡單的數(shù)字變化的J2ME代碼:
package import java.util.*; import javax.microedition.lcdui.*; /** * 使用Timer和TimerTask實(shí)現(xiàn)多線程 * 該代碼實(shí)現(xiàn)的功能是屏幕上的數(shù)字一直增加,按下5鍵暫停,再次按下5鍵繼續(xù)增加 */ public class NumberCanvas extends Canvas { /**定時(shí)器*/ Timer timer; /**屏幕上顯示的數(shù)字*/ private int number = 0; /**屏幕寬度*/ private int width; /**屏幕高度*/ private int height; public NumberCanvas() { //獲得屏幕的高度和寬度 width = this.getWidth(); height = this.getHeight(); //啟動線程 start(); } /** * 啟動線程 */ private void start(){ if(timer == null){ //啟動定時(shí)器 timer = new Timer(); timer.schedule(new NumberTimerTask(),0,300); } } /** * 停止線程 */ private void stop(){ if(timer != null){ //停止線程 timer.cancel(); timer = null; } } /** * 按鍵處理 * @param keyCode int 按下的鍵值 */ public void keyPressed(int keyCode){ //判斷按下的數(shù)字鍵5 if(keyCode == Canvas.KEY_NUM5){ //判斷當(dāng)前的狀態(tài) if(timer == null){ start(); }else{ stop(); } } } protected void paint(Graphics g) { //清屏 g.setColor(0xffffff); g.fillRect(0,0,width,height); g.setColor(0x000000); g.drawString(String.valueOf(number),50,50,Graphics.TOP | Graphics.LEFT); } /** * 線程任務(wù)動作 */ public class NumberTimerTask extends TimerTask{ public void run(){ //數(shù)字增加 number ; //重繪 repaint(); } } } |
分享:使用Java編寫Palm OS程序的解決方案1使用Java語言為 Palm OS編寫程序的領(lǐng)域還沒有完全統(tǒng)一,并且也有許多程度上的差異,目前,市面上有好幾種不同的可用的應(yīng)用程序接口,每種應(yīng)用程序接口都給出了一個(gè)到當(dāng)前的Palm OS應(yīng)用
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實(shí)現(xiàn)
- 網(wǎng)頁模板:關(guān)于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項(xiàng)目中連接Access數(shù)據(jù)庫的配置方法
- JDBC連接Access數(shù)據(jù)庫的幾種方式介紹
- 網(wǎng)站圖片路徑的問題:絕對路徑/虛擬路徑
- (jsp/html)網(wǎng)頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對路徑下的圖片解決方法
- 相關(guān)鏈接:
- 教程說明:
JSP教程-在J2ME中使用Timer和TimerTask來實(shí)現(xiàn)多線程
。