尝试在 J2ME MIDlet 中创建线程
Posted
技术标签:
【中文标题】尝试在 J2ME MIDlet 中创建线程【英文标题】:Trying to create a Thread in J2ME MIDlet 【发布时间】:2014-03-13 12:39:28 【问题描述】:当我尝试运行一个线程时,它会给出以下错误
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");
【问题讨论】:
th
未初始化,为其赋值:ThreadClass th = new ThreadClass();
@hoaz 谢谢你的评论
对于下一个错误:错误消息告诉您错误发生在文件 Midlet.java 的第 28 行的方法 Midlet.startApp 中,并且在不应该出现的情况下显示为 null 的内容。现在只需一小步就可以发现 'th' 可能为空。
【参考方案1】:
正如 hoaz 所说,您需要初始化您的对象。
另外,您的 startThread() 方法是多余的。为什么不直接调用 start?
无论如何,让线程自己启动被认为是不好的做法。所以我建议重写你的代码:
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");
【讨论】:
以上是关于尝试在 J2ME MIDlet 中创建线程的主要内容,如果未能解决你的问题,请参考以下文章