0

我最近开始使用线程,我正在尝试在 Android 中完成 Looper 类的 Java 实现。基本上,我正在制作一个 Java 类,它将线程放入队列中,然后由 Looper 类执行。我已经完成了大部分代码,但在任务排队方面存在问题。

在 Looper 类中,我声明了队列和我的入队方法:

List<Runnable> queue;   

public synchronized void enqueue(Runnable runnable) {
    queue.add(runnable);
    notify(); // signal a waiting thread
}

然后我创建了另一个名为 TaskManager 的类来将任务添加到队列中。我打电话时收到错误:

loop.enqueue(new Task());

其中 Task() 实现了 runnable 并且只是在其 run() 方法中将两个整数相加......这只是一个测试。

我收到的错误是:

Exception in thread "Thread-0" java.lang.NullPointerException
at Looper.enqueue(Looper.java:20) (this is the queue.add(runnable))
at TaskMaker.run(TaskMaker.java:16) (this is the loop.enqueue(new Task())

我显然做错了什么并且没有正确实施……我应该怎么做?我排队任务的方式正确吗?感谢您的帮助,非常感谢!

4

1 回答 1

7

您是否正在初始化队列变量?像:

List<Runnable> queue = new ArrayList<Runnable>();
于 2011-03-08T18:11:31.740 回答