インタフェースBlockingDeque<E>
- 型パラメータ:
E- この両端キューに保持されている要素の型
- すべてのスーパー・インタフェース:
BlockingQueue<E>,Collection<E>,Deque<E>,Iterable<E>,Queue<E>,SequencedCollection<E>
- 既知のすべての実装クラス:
LinkedBlockingDeque
Dequeです。
BlockingDequeメソッドには4つの形式があり、すぐには達成できなくても将来のある時点で達成できる可能性がある操作を異なる方法で処理します。1つめは例外をスローし、2つめは特殊な値(操作に応じてnullとfalseのいずれか)を返し、3つめは操作が正常に完了するまで現在のスレッドを無期限にブロックし、4つめは処理を中止するまで指定された制限時間内のみブロックします。 これらのメソッドについて、次の表にまとめます。
| 最初の要素(先頭) | ||||
|---|---|---|---|---|
| 例外のスロー | 特殊な値 | ブロック | タイム・アウト | |
| 挿入 | 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メソッド |
|
|---|---|---|
| 挿入 | 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
-
メソッドのサマリー
修飾子と型メソッド説明boolean指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。void容量制限に違反することなく指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。void容量制限に違反することなく指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。boolean指定された要素がこの両端キューに含まれている場合にtrueを返します。element()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。iterator()この両端キュー内の要素を適切な順序で反復処理するイテレータを返します。boolean指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。boolean指定された要素をこの両端キューで表されるキュー(つまり、この両端キューの末尾)に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。booleanofferFirst(E e) 容量制限に違反することなしに指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。booleanofferFirst(E e, long timeout, TimeUnit unit) 指定された要素をこの両端キューの先頭に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。boolean容量制限に違反することなしに指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。boolean指定された要素をこの両端キューの末尾に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。peek()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得しますが、削除しません。両端キューが空の場合は、nullを返します。poll()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得および削除します。両端キューが空の場合は、nullを返します。この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。この両端キューの最初の要素を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。この両端キューの最後の要素を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。void容量制限に違反することなしに要素をこの両端キューで表されるスタック(つまり、この両端キューの先頭)にすぐにプッシュできる場合は、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。void指定された要素をこの両端キューで表されるキュー(つまり、この両端キューの末尾)に挿入します。必要に応じて、空きが生じるまで待機します。void指定された要素をこの両端キューの先頭に挿入します。必要に応じて、空きが生じるまで待機します。void指定された要素をこの両端キューの末尾に挿入します。必要に応じて、空きが生じるまで待機します。remove()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。boolean指定された要素のうち最初に出現したものを、この両端キューから削除します。boolean指定された要素のうち最初に出現したものを、この両端キューから削除します。boolean指定された要素のうち最後に出現したものを、この両端キューから削除します。intsize()この両端キュー内の要素の数を返します。take()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。この両端キューの最初の要素を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。takeLast()この両端キューの最後の要素を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。インタフェースjava.util.concurrent.BlockingQueueで宣言されたメソッド
drainTo, drainTo, remainingCapacityインタフェースjava.util.Collectionで宣言されたメソッド
clear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArrayインタフェースjava.util.Dequeで宣言されたメソッド
addAll, descendingIterator, getFirst, getLast, peekFirst, peekLast, pollFirst, pollLast, pop, removeFirst, removeLast, reversed
-
メソッドの詳細
-
addFirst
void addFirst(E e) 容量制限に違反することなく指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferFirstメソッドを使用することをお薦めします。- 定義:
addFirst、インタフェースDeque<E>- 定義:
- インタフェース
SequencedCollection<E>内のaddFirst - パラメータ:
e- 追加する要素- スロー:
IllegalStateException- 容量制限のために、この時点で要素を追加できない場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
addLast
void addLast(E e) 容量制限に違反することなく指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferLastメソッドを使用することをお薦めします。- 定義:
addLast、インタフェースDeque<E>- 定義:
- インタフェース
SequencedCollection<E>内のaddLast - パラメータ:
e- 追加する要素- スロー:
IllegalStateException- 容量制限のために、この時点で要素を追加できない場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offerFirst
boolean offerFirst(E e) 容量制限に違反することなしに指定された要素をこの両端キューの先頭にすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするのみのaddFirstメソッドよりもこのメソッドを使用することをお薦めします。- 定義:
offerFirst、インタフェースDeque<E>- パラメータ:
e- 追加する要素- 戻り値:
- 要素がこの両端キューに追加された場合は
true、それ以外の場合はfalse - スロー:
ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offerLast
boolean offerLast(E e) 容量制限に違反することなしに指定された要素をこの両端キューの末尾にすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするのみのaddLastメソッドよりもこのメソッドを使用することをお薦めします。- 定義:
offerLast、インタフェースDeque<E>- パラメータ:
e- 追加する要素- 戻り値:
- 要素がこの両端キューに追加された場合は
true、それ以外の場合はfalse - スロー:
ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
putFirst
void putFirst(E e) throws InterruptedException 指定された要素をこの両端キューの先頭に挿入します。必要に応じて、空きが生じるまで待機します。- パラメータ:
e- 追加する要素- スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
putLast
void putLast(E e) throws InterruptedException 指定された要素をこの両端キューの末尾に挿入します。必要に応じて、空きが生じるまで待機します。- パラメータ:
e- 追加する要素- スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offerFirst
boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException 指定された要素をこの両端キューの先頭に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。- パラメータ:
e- 追加する要素timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- 成功した場合は
true、空きが生じる前に指定された待機時間が経過した場合はfalse - スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offerLast
boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException 指定された要素をこの両端キューの末尾に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。- パラメータ:
e- 追加する要素timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- 成功した場合は
true、空きが生じる前に指定された待機時間が経過した場合はfalse - スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
takeFirst
E takeFirst() throws InterruptedExceptionこの両端キューの最初の要素を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。- 戻り値:
- この両端キューの先頭
- スロー:
InterruptedException- 待機中に割込みが発生した場合
-
takeLast
E takeLast() throws InterruptedExceptionこの両端キューの最後の要素を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。- 戻り値:
- この両端キューの末尾
- スロー:
InterruptedException- 待機中に割込みが発生した場合
-
pollFirst
この両端キューの最初の要素を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。- パラメータ:
timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- この両端キューの先頭。空きが生じる前に指定された待機時間が経過した場合は
null - スロー:
InterruptedException- 待機中に割込みが発生した場合
-
pollLast
この両端キューの最後の要素を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。- パラメータ:
timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- この両端キューの末尾。空きが生じる前に指定された待機時間が経過した場合は
null - スロー:
InterruptedException- 待機中に割込みが発生した場合
-
removeFirstOccurrence
boolean removeFirstOccurrence(Object o) 指定された要素のうち最初に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 つまり、o.equals(e)となる最初の要素eが存在する場合は、その要素を削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。- 定義:
removeFirstOccurrence、インタフェースDeque<E>- パラメータ:
o- この両端キューから削除される要素(その要素が存在する場合)- 戻り値:
- この呼出しの結果として要素が削除された場合は
true - スロー:
ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)NullPointerException- 指定された要素がnullの場合(オプション)
-
removeLastOccurrence
boolean removeLastOccurrence(Object o) 指定された要素のうち最後に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 つまり、o.equals(e)となる最後の要素eが存在する場合は、その要素を削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。- 定義:
removeLastOccurrence、インタフェースDeque<E>- パラメータ:
o- この両端キューから削除される要素(その要素が存在する場合)- 戻り値:
- この呼出しの結果として要素が削除された場合は
true - スロー:
ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)NullPointerException- 指定された要素がnullの場合(オプション)
-
add
boolean add(E e) 指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。 容量制限のある両端キューを使用する場合、通常はofferを使用することをお薦めします。このメソッドは、
addLastと同等です。- 定義:
add、インタフェースBlockingQueue<E>- 定義:
add、インタフェースCollection<E>- 定義:
add、インタフェースDeque<E>- 定義:
add、インタフェースQueue<E>- パラメータ:
e- 追加する要素- 戻り値:
true(Collection.add(E)で指定されているとおり)- スロー:
IllegalStateException- 容量制限のために、この時点で要素を追加できない場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offer
boolean offer(E e) 指定された要素を、この両端キューで表されるキュー(つまり、この両端キューの末尾)に、容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。 容量制限のある両端キューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするのみのadd(E)メソッドよりもこのメソッドを使用することをお薦めします。このメソッドは、
offerLastと同等です。- 定義:
offer、インタフェースBlockingQueue<E>- 定義:
offer、インタフェースDeque<E>- 定義:
offer、インタフェースQueue<E>- パラメータ:
e- 追加する要素- 戻り値:
- このキューに要素が追加された場合は
true、それ以外の場合はfalse - スロー:
ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
put
void put(E e) throws InterruptedException 指定された要素をこの両端キューで表されるキュー(つまり、この両端キューの末尾)に挿入します。必要に応じて、空きが生じるまで待機します。このメソッドは、
putLastと同等です。- 定義:
put、インタフェースBlockingQueue<E>- パラメータ:
e- 追加する要素- スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
offer
boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException 指定された要素をこの両端キューで表されるキュー(つまり、この両端キューの末尾)に挿入します。必要に応じて、指定された待機時間まで空きが生じるのを待機します。このメソッドは、
offerLastと同等です。- 定義:
offer、インタフェースBlockingQueue<E>- パラメータ:
e- 追加する要素timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- 要素がこの両端キューに追加された場合は
true、それ以外の場合はfalse - スロー:
InterruptedException- 待機中に割込みが発生した場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-
remove
E remove()この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。 このメソッドは、両端キューが空の場合に例外をスローする点のみがpoll()メソッドと異なります。このメソッドは、
removeFirstと同等です。 -
poll
-
take
E take() throws InterruptedExceptionこの両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。このメソッドは、
takeFirstと同等です。- 定義:
take、インタフェースBlockingQueue<E>- 戻り値:
- この両端キューの先頭
- スロー:
InterruptedException- 待機中に割込みが発生した場合
-
poll
この両端キューによって表されるキューの先頭(つまり、この両端キューの最初の要素)を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。このメソッドは、
pollFirstと同等です。- 定義:
poll、インタフェースBlockingQueue<E>- パラメータ:
timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- この両端キューの先頭。空きが生じる前に指定された待機時間が経過した場合は
null - スロー:
InterruptedException- 待機中に割込みが発生した場合
-
element
-
peek
-
remove
boolean remove(Object o) 指定された要素のうち最初に出現したものを、この両端キューから削除します。 その要素が両端キューにない場合、変更はありません。 つまり、o.equals(e)となる最初の要素eが存在する場合は、その要素を削除します。 指定された要素がこの両端キューに含まれていた場合(すなわち、呼出しの結果としてこの両端キューが変更された場合)はtrueを返します。このメソッドは、
removeFirstOccurrenceと同等です。- 定義:
remove、インタフェースBlockingQueue<E>- 定義:
remove、インタフェースCollection<E>- 定義:
remove、インタフェースDeque<E>- パラメータ:
o- この両端キューから削除される要素(その要素が存在する場合)- 戻り値:
- この呼出しの結果、この両端キューが変更された場合は
true - スロー:
ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)NullPointerException- 指定された要素がnullの場合(オプション)
-
contains
boolean contains(Object o) 指定された要素がこの両端キューに含まれている場合にtrueを返します。 つまり、この両端キューに、o.equals(e)となる要素eが1つ以上含まれている場合にだけtrueを返します。- 定義:
contains、インタフェースBlockingQueue<E>- 定義:
contains、インタフェースCollection<E>- 定義:
contains、インタフェースDeque<E>- パラメータ:
o- この両端キューに含まれているかどうかを調べるオブジェクト- 戻り値:
- 指定された要素がこの両端キューに含まれている場合は
true - スロー:
ClassCastException- 指定された要素のクラスが、この両端キューと互換でない場合(オプション)NullPointerException- 指定された要素がnullの場合(オプション)
-
size
-
iterator
-
push
void push(E e) 容量制限に違反することなしに要素をこの両端キューで表されるスタック(つまり、この両端キューの先頭)にすぐにプッシュできる場合は、そうします。使用可能な空き領域がその時点で存在しない場合はIllegalStateExceptionをスローします。このメソッドは、
addFirstと同等です。- 定義:
push、インタフェースDeque<E>- パラメータ:
e- プッシュする要素- スロー:
IllegalStateException- 容量制限のために、この時点で要素を追加できない場合ClassCastException- 指定された要素のクラスが原因で、この両端キューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、この両端キューにその要素を追加できない場合
-