beautypg.com

2 programming the midlet, 1 threads, 2 example – Siemens XT65 User Manual

Page 121

background image

Java User’s Guide

13.2 Programming the MIDlet

122

s

wm_java_usersguide_v12

Page 121 of 123

2008-02-25

Confidential / Released

13.2

Programming the MIDlet

The life cycle and structure of MIDlets are described in

Chapter 6

. 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.

13.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.

13.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;

}

This manual is related to the following products: