【问题标题】:Java retrieve all the elements from a queue until it is emptyJava从队列中检索所有元素,直到它为空
【发布时间】:2015-04-22 06:44:32
【问题描述】:

我想在 android/java 中实现一个 Queue 元素,这样,

  1. 当我在该队列中插入一个元素时,如果该元素是队列中唯一的元素,该元素将立即开始执行。
  2. 如果队列中还有其他元素,它们会一个接一个地依次执行。
  3. 一旦所有元素都执行完毕,队列就会等待插入新元素。插入元素后,它将再次开始执行。

在这种情况下,最好的 Collection 是什么?是否有任何集合提供满足条件 3 的默认回调?

我能想到的一个实现是在我的队列实现中编写一个方法,类似于

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();
}

【问题讨论】:

    标签: java android queue


    【解决方案1】:

    JavaDoc 中描述了您需要的内容。有一个名为 SerialExecutor 的实现可能适合您的问题。

    【讨论】:

    • 看起来正是我要找的东西。谢谢。
    【解决方案2】:

    为什么不尝试实现一个监听器,它会一直监听队列。

    这将确保一旦有新条目,它们就会开始执行。

    【讨论】:

    • 这意味着一个线程继续运行,它检查队列是否为空。这不是低效吗?当队列为空或添加元素时,我想要一些回调。
    • 编写您的自定义侦听器类。您可以在其中编写自己的方法(回调)并在处理每个条目后检查大小,如果大小等于 0,则调用您的回调。
    • @Rajkiran 否。线程处于等待状态,直到队列中有可用的东西。见BlockingQueue
    猜你喜欢
    • 2019-08-11
    • 2018-01-21
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    相关资源
    最近更新 更多