我最近开始使用线程,我正在尝试在 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())
我显然做错了什么并且没有正确实施……我应该怎么做?我排队任务的方式正确吗?感谢您的帮助,非常感谢!