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 那么多。