J2me多執行緒(入門級別)
執行緒也稱為輕型程式 (LWP)。因為執行緒只能在單個程式的作用域內活動,所以建立執行緒比建立程式要廉價
得多。這樣,因為執行緒允許協作和資料交換,並 且在計算資源方面非常廉價,所以執行緒比程式更可取。執行緒需
要作業系統的支援,因此不是所有的機器都提供執行緒。Java 程式語言,作為相當新的一種語言, 已將執行緒支
持與語言本身合為一體,而作為java的微小版本的J2ME同樣對執行緒提供了強健的支援。 在java語言程式設計中,
使用執行緒的方法只有兩種:一是通過繼承Thread類,二是在用到執行緒的類中實現runnable介面。
Thread 類
Thread 類是一個具體的類,即不是抽象類,該類封裝了執行緒的行為。要建立一個執行緒,就必須建立一個繼承自
Thread 類子類。程式設計師必須覆蓋Thread 的 run() 函式來完成有用的工作。使用時並不直接呼叫此函式;而是
必須呼叫 Thread 的 start() 函式,該函式再呼叫 run()。下面的程式碼說明了它的用法:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Bounce extends MIDlet {
private BounceCanvas myCanvas;
/**
* 宣告RectThread執行緒類
*/
private RectThread rectThreads[];
private boolean done = false;
private Display myDisplay;
/**
* repaint鎖
*/
private Object repaintLock = new Object();
Bounce() {
myDisplay = Display.getDisplay(this);
myCanvas = new BounceCanvas();
createRectThreads();
}
/*
* 建立四個矩形框
*/
void createRectThreads () {
rectThreads = new RectThread[4];
rectThreads[0] = new RectThread(2, 2, 30, 30, 8, myCanvas);
rectThreads[1] = new RectThread(-2, -2, 40, 40, 4, myCanvas);
rectThreads[2] = new RectThread(-1, -1, 50, 10, 10,myCanvas);
rectThreads[3] = new RectThread(4, 4, 10, 10, 2, myCanvas);
}
/**
* 啟動執行緒
*/
protected void startApp() throws MIDletStateChangeException {
myDisplay.setCurrent(myCanvas);
if (rectThreads == null) {
createRectThreads();
}
for (int i = 0; i < rectThreads.length; i++) {
if (!rectThreads[i].isAlive()) {
rectThreads[i].start();
}
}
}
/**
* 停止執行緒
*/
protected void pauseApp() {
done = true;
if (rectThreads != null) {
for(int i = 0; i < rectThreads.length; i++) {
rectThreads[i].stopThread();
}
rectThreads = null;
}
}
protected void destroyApp(boolean unconditional) {}
class BounceCanvas extends Canvas {
public static final int BACKGROUND_COLOR = 0xFFFFFF;
public static final int FOREGROUND_COLOR = 0x000000;
public void paint(Graphics g) {
synchronized (g) {
g.setColor(BACKGROUND_COLOR);
g.fillRect(0, 0, getWidth(), getHeight());
if (rectThreads != null) {
for (int i = 0; i < rectThreads.length; i++) {
rectThreads[i].paint(g);
}
}
}
}
}
相關文章
- Java多執行緒(一)多執行緒入門篇Java執行緒
- Java多執行緒入門Java執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- 多執行緒基礎入門執行緒
- python 多執行緒 入門Python執行緒
- 入門python多執行緒/多程式Python執行緒
- day20_多執行緒入門丶執行緒安全執行緒
- j2me多執行緒遇到問題執行緒
- Java入門教程十三(多執行緒)Java執行緒
- Android入門教程 | 多執行緒Android執行緒
- Linux程式多執行緒入門Linux執行緒
- go語言多執行緒入門筆記-執行緒同步Go執行緒筆記
- Java多執行緒傻瓜入門介紹Java執行緒
- Java 高階 --- 多執行緒快速入門Java執行緒
- java多執行緒的入門小記Java執行緒
- Java入門系列-21-多執行緒Java執行緒
- iOS多執行緒程式設計入門iOS執行緒程式設計
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- c++11 多執行緒入門教程(一)C++執行緒
- QT從入門到入土(四)——多執行緒QT執行緒
- c++11多執行緒入門例項C++執行緒
- vc入門寶典六(多執行緒) (轉)執行緒
- Java多執行緒程式設計入門(轉)Java執行緒程式設計
- python爬蟲入門八:多程式/多執行緒Python爬蟲執行緒
- Java多執行緒 -- wait() 和 notify() 使用入門Java執行緒AI
- Java多執行緒系列——從菜鳥到入門Java執行緒
- 多執行緒和多執行緒同步執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒與多執行緒執行緒
- 敲開阿里大門的執行緒、多執行緒和執行緒池面試專題阿里執行緒面試
- VC多執行緒 C++ 多執行緒執行緒C++
- QT從入門到入土(四)——多執行緒(QtConcurrent::run())QT執行緒
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒