Я хочу реализовать очереди элементов в Android/Java таким образом, чтоJava извлечь все элементы из очереди, пока не опустеет
- Когда я вставить элемент в этой очереди, то этот элемент будет немедленно начните выполнение, если это единственный элемент в очереди.
- Если в очереди есть другие элементы, они выполняются последовательно один за другим.
- После того, как все элементы выполнены, очередь ожидает ввода нового элемента. После того, как элемент вставлен, он снова запустит выполнение.
Что может быть лучшей коллекцией для использования в этом сценарии? Существуют ли какие-либо дефолтные обратные вызовы любой коллекции, которые удовлетворяют условию 3?
Одна реализация, я думаю, пишет метод в моей очереди impelementation что-то вроде
public static void executeNext() {
Executor element = getFirst();
if (element != null && element.doneExecuting()) {
pop();
}
Executor next = getFirst();
next.execute();
}
, который будет вызываться из моего Executor
объекта класса (который является элементом моей очереди), как только выполнение отделки
public void onExceutionComplete(){
ExecutionQueue.getInstance().executeNext();
}
Это означает, что поток продолжает работать постоянно, который проверяет, нет ли очереди в очереди. Разве это неэффективно? Я хочу получить обратный вызов, когда очередь пуста или элемент добавлен к ней. – Rajkiran
напишите свой собственный класс слушателя. где вы можете написать свой собственный метод (обратный вызов) и после обработки каждой проверки входа для размера, если размер равен 0, вызовите обратный вызов. –
@ Rajkiran No. Нить находится в состоянии ожидания, пока в очереди не появится что-то. См. [BlockingQueue] (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html) –