インタフェースTransferQueue<E>
- 型パラメータ:
E- このキューに保持されている要素の型
- すべてのスーパー・インタフェース:
BlockingQueue<E>, Collection<E>, Iterable<E>, Queue<E>
- 既知のすべての実装クラス:
LinkedTransferQueue
public interface TransferQueue<E> extends BlockingQueue<E>
コンシューマが要素を受け取るまでプロデューサが待機する
BlockingQueue。 TransferQueueは、たとえば、プロデューサが(transfer(E)メソッドを使用して) takeまたはpollを呼び出しているコンシューマによる要素の受信を待機する場合と、受信を待機せずに(putメソッド経由で)要素をキューに入れる場合がある、メッセージ受渡しアプリケーションで役立つことがあります。 tryTransferの非ブロック・バージョンやタイムアウト・バージョンも使用できます。 また、項目を待機しているスレッドが存在するかどうかを(hasWaitingConsumer()経由で) TransferQueueに照会することもできます。これは、peek操作と逆になります。
ほかのブロッキング・キューと同様に、TransferQueueは、容量が制限される場合があります。 その場合、試行される転送操作では、最初に使用可能な容量の待機をブロックし、そのあとでコンシューマによる受信の待機をブロックすることができます。 SynchronousQueueなどの、容量が0のキューでは、putとtransferは事実上同義であることに注意してください。
このインタフェースは、Java Collections Frameworkのメンバーです。
- 導入されたバージョン:
- 1.7
-
メソッドのサマリー
修飾子と型メソッド説明intBlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマの推定数を返します。booleanBlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。void待機する必要があれば待機し、要素をコンシューマに転送します。booleantryTransfer(E e) 可能な場合、待機中のコンシューマに要素をただちに転送します。booleantryTransfer(E e, long timeout, TimeUnit unit) タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。インタフェースで宣言されたメソッド BlockingQueue
add, contains, drainTo, drainTo, offer, offer, poll, put, remainingCapacity, remove, take修飾子と型メソッド説明boolean容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合はtrueを返し、その時点で使用可能な空き領域が存在しない場合はIllegalStateExceptionをスローします。boolean指定された要素がキューに含まれている場合にtrueを返します。intdrainTo(Collection<? super E> c) このキューから利用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。intdrainTo(Collection<? super E> c, int maxElements) 指定された数以内の利用可能な要素をこのキューから削除し、指定されたコレクションに追加します。boolean指定された要素を、このキューに容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合はtrueを返し、使用可能な空き領域がその時点で存在しない場合はfalseを返します。boolean指定された要素をこのキューに挿入します。必要に応じて、指定された時間まで空きが生じるのを待機します。このキューの先頭を取得して削除します。必要に応じて、指定された待機時間まで要素が利用可能になるのを待機します。void指定された要素をこのキューに挿入します。必要に応じて、空きが生じるまで待機します。int理想的な状態(メモリーやリソースの制限がない状態)で、このキューがブロックせずに受け入れることができる追加要素の数を返します。組込み制限が存在しない場合はInteger.MAX_VALUEを返します。boolean指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。take()このキューの先頭を取得して削除します。必要に応じて、要素が利用可能になるまで待機します。インタフェースCollectionで宣言されたメソッド
addAll, clear, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray修飾子と型メソッド説明booleanaddAll(Collection<? extends E> c) 指定されたコレクションのすべての要素をこのコレクションに追加します(オプションの操作)。voidclear()このコレクションからすべての要素を削除します(オプションの操作)。booleancontainsAll(Collection<?> c) 指定したコレクションのすべての要素がこのコレクションに含まれている場合、trueを返します。boolean指定されたオブジェクトとこのコレクションが等しいかどうかを比較します。inthashCode()コレクションのハッシュ・コード値を返します。booleanisEmpty()このコレクションに要素がない場合にtrueを返します。iterator()コレクションの要素のイテレータを返します。このコレクションをソースとして、潜在的に並列のStreamを返します。booleanremoveAll(Collection<?> c) 指定されたコレクションにも格納されているこのコレクションのすべての要素を削除します(オプションの操作)。default boolean指定された述語(オプションの操作)を満たす、このコレクションのすべての要素を削除します。booleanretainAll(Collection<?> c) このコレクションにおいて、指定されたコレクションに格納されている要素だけを保持します(オプションの操作)。intsize()このコレクション中の要素の数を返します。default Spliterator<E> このコレクション内の要素に対するSpliteratorを作成します。stream()このコレクションをソースとして使用して、逐次的なStreamを返します。Object[]toArray()このコレクションの要素がすべて格納されている配列を返します。default <T> T[]toArray(IntFunction<T[]> generator) 指定されたgenerator関数を使用してこのコレクションのすべての要素を含む配列を返し、返された配列を割り当てます。<T> T[]toArray(T[] a) このコレクション内のすべての要素を保持する配列を返します。返される配列の実行時の型は、指定された配列の型です。
-
メソッドの詳細
-
tryTransfer
boolean tryTransfer(E e) 可能な場合、待機中のコンシューマに要素をただちに転送します。より正確には、(
BlockingQueue.take()または時間指定のpollで)要素を受け取ることを待機しているコンシューマがすでに存在する場合は指定された要素をただちに転送し、それ以外の場合は要素をエンキューせずにfalseを返します。- パラメータ:
e- 転送する要素- 戻り値:
true- 要素が転送された場合。それ以外の場合はfalse- スロー:
ClassCastException- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
-
transfer
void transfer(E e) throws InterruptedException 待機する必要があれば待機し、要素をコンシューマに転送します。より正確には、指定された要素の受信を(
BlockingQueue.take()または時間指定のpollで)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は要素がコンシューマによって受信されるまで待機します。- パラメータ:
e- 転送する要素- スロー:
InterruptedException- 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりませんClassCastException- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
-
tryTransfer
boolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException タイム・アウトが経過する前に要素をコンシューマに転送できる場合には、そうします。より正確には、指定された要素の受信を(
BlockingQueue.take()または時間指定のpollで)すでに待機しているコンシューマが存在する場合はその要素をただちに転送し、それ以外の場合は要素がコンシューマによって受信されるまで待機します。その要素を転送できるようになる前に、指定された待機時間が経過した場合はfalseを返します。- パラメータ:
e- 転送する要素timeout- 処理を中止するまでの待機時間。単位はunitunit-timeoutパラメータの解釈方法を決定するTimeUnit- 戻り値:
- 成功した場合は
true、完了前に指定された待機時間が経過した場合はfalseで、この場合、要素はエンキューされたままになりません - スロー:
InterruptedException- 待機中に割り込まれた場合。この場合、要素はエンキューされたままになりませんClassCastException- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException- 指定された要素がnullである場合IllegalArgumentException- 指定された要素のあるプロパティが原因で、このキューに要素を追加できない場合
-
hasWaitingConsumer
boolean hasWaitingConsumer()BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマが少なくとも1つある場合、trueを返します。 戻り値は状況の瞬間的な状態です。- 戻り値:
- 待機中のコンシューマが少なくとも1つ存在する場合は
true
-
getWaitingConsumerCount
int getWaitingConsumerCount()BlockingQueue.take()または時間指定のpoll経由で要素を受け取ることを待機しているコンシューマの推定数を返します。 戻り値は状況の瞬間的な状態の近似であるため、コンシューマが完了したり、待機を中止したりした場合に不正確になることがあります。 この値は監視およびヒューリスティックな方法に役立つ場合がありますが、同期制御のためのものではありません。 このメソッドの実装は、hasWaitingConsumer()の実装よりもかなり遅くなる可能性が高くなります。- 戻り値:
- 要素を受け取ることを待機しているコンシューマの数
-