Question

When I am try to run a thread then it is giving following error

startApp threw an Exception
java.lang.NullPointerException
java.lang.NullPointerException
      at threadlearn.Midlet.startApp(Midlet.java:28)

MIDlet.java

public class Midlet extends MIDlet {
    ThreadClass th;

    public void startApp() {
        th.startThread();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

class ThreadClass implements Runnable{ 
    Thread t;

    ThreadClass() {

        t = new Thread(this);
    }

    public void startThread() {
        t.start();
    }

    public void run() {
        System.out.println("We are in Thread");
    }          
}
Was it helpful?

Solution

As hoaz says, you need to initialize your object.

Also, your startThread() method is redundant. Why not just call start?

Anyway, it's considered bad practice to have threads start themselves. So I propose this rewrite of your code:

public class Midlet extends MIDlet {
 ThreadClass th = null;
 Thread myThread = null;

 public void startApp() {
  if (th==null) {
   th = new ThreadClass();
   myThread = new Thread(th);
  }
  myThread.start();
 }

 public void pauseApp() {
 }

 public void destroyApp(boolean unconditional) {
 }
}

class ThreadClass implements Runnable{ 

 ThreadClass() {
 }

 public void run() {
  System.out.println("We are in Thread");
 }          
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top