ЯВА: Возможно ли добавить работающий поток в очередь? - PullRequest
0 голосов
/ 08 марта 2011

Я недавно начал работать с потоками и пытаюсь завершить реализацию Java класса Looper в Android.В основном я делаю класс 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())

Я, очевидно, что-то делаю не так и не реализую это право ... как мне поступить?Правильно ли я ставлю задачу?Спасибо за любую помощь, она очень ценится!

1 Ответ

7 голосов
/ 08 марта 2011

Вы инициализируете переменную очереди? как:

List<Runnable> queue = new ArrayList<Runnable>();
...