Thread 可以让我们的程序看起来同时间作一个以上的事情,范例如下:
//MyThread.java
public class MyThread extends Thread {
boolean exit = false;
char printchar;
public MyThread(char c) {
printchar = c;
}
public void run() {
while (!exit) {
System.out.print(printchar);
System.out.flush();
try {
Thread.sleep(1000);
} catch (Exception e) {}
}
}
}
//ThreadTest.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ThreadTest extends MIDlet {
MyThread mt1;
MyThread mt2;
public ThreadTest() {
}
public void startApp() {
mt1 = new MyThread('A');
mt1.start();
mt2 = new MyThread('B');
mt2.start();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
mt1.exit = true;
mt1 = null;
mt2.exit = true;
mt2 = null;
}
}
执行结果:
ABBAABBAABBAABE………….
每个人的结果都会不同,A、B 印出的数目则看何时关闭MIDlet 而定上述范例中,有几个重点必须注意:
1. Thread 的建立有两种方法,第一是直接继承Thread 类别,并实作其run()方法,这是上述范例所使用的方式。第二种是实作Runnable 接口,并实作其run()方法。这两种方法请参阅一般讲解Java 程序语言的书,都会有详尽的说明。一般建议使用第二种方法,但是第一种方法比较简单。
2. 启动Thread 时,请教用其start()方法。切莫因为实作run()方法就直接叫用run(),否则无法达到多绪执行的效果。
3. 要结束一个Thread 的执行,请利用自己定义的旗标(flag)。当外头设定此旗标时,Thread 自动离开run()方法,此时就会造成Thread 结束。虽然在J2SE之中的Thread 类别有stop()方法可以结束Thread 的执行,但是这个方法也已经被列为不建议使用(deprecate)。
其它Thread 的方法,请参阅一般讲解Java 程序语言的书,不过CLDC 里头的Thread 功能没有J2SE 那么多。