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 に答える