JAVA:可以将可运行的线程添加到队列中吗?

IZI*_*IZI 0 java queue multithreading priority-queue runnable

我最近开始使用Threads,我正在尝试在Android中完成Looper类的Java实现.基本上我正在创建一个Java类,它将线程放入一个队列,然后由Looper类执行.我已经完成了大部分代码但是在排队任务时遇到了问题.

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

List<Runnable> queue;   

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

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

loop.enqueue(new Task());
Run Code Online (Sandbox Code Playgroud)

其中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())
Run Code Online (Sandbox Code Playgroud)

我显然做错了什么并没有实现这个......我该怎么做呢?我排队的任务是正确的吗?感谢您的帮助,非常感谢!

Car*_*osZ 7

你在初始化队列变量吗?喜欢:

List<Runnable> queue = new ArrayList<Runnable>();
Run Code Online (Sandbox Code Playgroud)