Cep Terminals GSM/GPRS TERMINAL CT63 JAVA 6203 User Manual

Product codes
6203
Page of 109
Java User’s Guide
12.2 Programming the MIDlet
109
wm_java_usersguide_v19
Page 108 of 109
2012-01-27
Confidential / Released
12.2
Programming the MIDlet
The life cycle and structure of MIDlets are described in 
. Since the MIDlets will run on 
Java ME
TM
, all of Java ME
TM
’s features, including threads, are available. Small applications, 
such as those without any timer functions or those used only for tests and simple examples, 
can be written without using threads. Longer applications should be implemented with threads.
12.2.1
Threads
Although small applications can be written without using threads longer applications should use 
them. The Java programming language is naturally multi-threaded which can make a substan-
tial difference in the performance of your application. Therefore we recommend referring to 
Java descriptions on threads before making any choices about threading models. Threads can 
be created in two ways. A class can be a subclass of Thread or it can implement Runnable
For example, threads can be launched in startApp() and destroyed in destroyApp(). Note that 
destroying Java threads can be tricky. It is recommended that the developer read the Java doc-
umentation on threads. It may be necessary to poll a variable within the thread to see if it is still 
alive.
12.2.2
Example
/* This example derives a class from Thread and creates two instances
 * of the subclass. One thread instance finishes itself, the other one
 * is stopped by the main application. */
package example.threaddemo;
import javax.microedition.midlet.*;
public class ThreadDemo extends MIDlet {
  /* Member variables */
  boolean    runThreads = true; // Flag for stopping threads
  DemoThread thread1;           // First instance of DemoThread
  DemoThread thread2;           // Second instance of DemoThread
  /* Private class implementing the thread to be started by the
   * main application */
  private class DemoThread extends Thread {
    int loops;
    public DemoThread(int waitTime) {
      /* Store number of loops to execute */
      loops = waitTime;
      System.out.println("Thread(" + loops + "): Created");
    }
    public void run() {
      System.out.println("Thread(" + loops + "): Started");
      for (int i = 1; i <= loops; i++) {
        /* Check if main application asked thread to die */
        if (runThreads != true) {
          System.out.println("Thread(" + loops + "): Stopped from outside");
          /* Leave thread */
          return;
        }