如何等待队列包含元素?

时间:2012-04-21 11:46:38

标签: java queue wait

我正在尝试实现一个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();
}

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

BlockingQueue接口为此目的使用take()方法。