有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图在J2ME MIDlet中创建线程

当我试图运行一个线程时,它给出了以下错误

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

中段。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");
    }          
}

共 (1) 个答案

  1. # 1 楼答案

    正如hoaz所说,您需要初始化对象

    另外,startThread()方法是冗余的。为什么不直接打电话开始呢

    无论如何,让线程自己启动被认为是不好的做法。因此,我建议重写您的代码:

    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");
     }          
    }