モジュール java.base
パッケージ java.util.concurrent

インタフェースBlockingDeque<E>

型パラメータ:
E - この両端キューに保持されている要素の型
すべてのスーパー・インタフェース:
BlockingQueue<E>, Collection<E>, Deque<E>, Iterable<E>, Queue<E>, SequencedCollection<E>
既知のすべての実装クラス:
LinkedBlockingDeque

public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E>
要素の取得時に両端キューが空でなくなるまで待機したり、要素の格納時に両端キュー内に空きが生じるまで待機するブロック操作を追加でサポートしたりするDequeです。

BlockingDequeメソッドには4つの形式があり、すぐには達成できなくても将来のある時点で達成できる可能性がある操作を異なる方法で処理します。1つめは例外をスローし、2つめは特殊な値(操作に応じてnullfalseのいずれか)を返し、3つめは操作が正常に完了するまで現在のスレッドを無期限にブロックし、4つめは処理を中止するまで指定された制限時間内のみブロックします。 これらのメソッドについて、次の表にまとめます。

BlockingDequeメソッドのサマリー
最初の要素(先頭)
例外のスロー 特殊な値 ブロック タイム・アウト
挿入 addFirst(e) offerFirst(e) putFirst(e) offerFirst(e, time, unit)
削除 removeFirst() pollFirst() takeFirst() pollFirst(time, unit)
調査 getFirst() peekFirst() 該当なし 該当なし
最後の要素(末尾)
例外のスロー 特殊な値 ブロック タイム・アウト
挿入 addLast(e) offerLast(e) putLast(e) offerLast(e, time, unit)
削除 removeLast() pollLast() takeLast() pollLast(time, unit)
調査 getLast() peekLast() 該当なし 該当なし

BlockingQueueと同様、BlockingDequeはスレッド・セーフであり、null要素を許可しません。また、容量制約を受ける場合と受けない場合があります。

BlockingDeque実装は、FIFOのBlockingQueueとして直接使用されることがあります。 BlockingQueueインタフェースから継承されたメソッドは、次の表に示すようにBlockingDequeメソッドと完全に同等です。

BlockingQueueメソッドとBlockingDequeメソッドの比較
BlockingQueueメソッド 同等のBlockingDequeメソッド
挿入 add(e) addLast(e)
offer(e) offerLast(e)
put(e) putLast(e)
offer(e, time, unit) offerLast(e, time, unit)
削除 remove() removeFirst()
poll() pollFirst()
take() takeFirst()
poll(time, unit) pollFirst(time, unit)
調査 element() getFirst()
peek() peekFirst()

メモリー整合性効果: ほかの並行処理コレクションと同様、オブジェクトをBlockingDequeに配置する前のスレッド内のアクションは、別のスレッドでのその要素へのアクセスまたはBlockingDequeからの削除に続くアクションよりも前に発生します。

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.6