5

我正在尝试实现一个 FIFO 观察者/可观察的解耦队列,但我不知道如何让一个方法等到队列不为空后再返回。这是我目前的尝试,但我确信必须有一个更优雅的解决方案。

/*
 * Waits until there is data, then returns it.
 */
private Double[] get() {
    while (queue.isEmpty()) {
        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            // Don't care.
        }
    }

    return queue.removeFirst();
}
4

2 回答 2

11

为什么不使用BlockingQueue- 这正是你想要的。

于 2012-04-21T11:53:02.920 回答
4

BlockingQueue接口有一个take()用于此目的的方法。

于 2012-04-21T12:00:47.373 回答