JavaでBlockingQueueインターフェースを実装する方法



この記事では、JavaでBlockingQueueインターフェースを実装する方法に関する詳細で包括的な知識を提供します。

キューは、プログラミング言語の重要な側面です。特に私たちが話している場合 。この記事では、JavaのBlockingQueueインターフェイスについて次の順序で説明します。

JavaのBlockingQueueインターフェイスとは何ですか?

JavaのBlockingQueueインターフェイスは、キューからデキューしようとしてキューが空になった場合、またはアイテムをキューに入れようとしてキューがすでにいっぱいになっている場合にブロックするキューです。空のキューからデキューしようとしているスレッドは、他のスレッドがアイテムをキューに挿入するまでブロックされます。アイテムをフルキューに入れようとしているスレッドは、1つ以上のアイテムをデキューするか、キューを完全にクリアすることによって、他のスレッドがキューにスペースを空けるまでブロックされます。





C ++の優先キュー

JavaのBlockingQueueインターフェイスは受け入れませんヌル値とスローNullPointerExceptionnull値をキューに格納しようとした場合。JavaBlockingQueueの実装は スレッドセーフ 。すべてのキューイングメソッドは本質的にアトミックであり、内部ロックまたは他の形式の同時実行制御を使用します。



Javaキュークラス図

Java Queueインターフェースは、Collectionインターフェースを拡張します。コレクションインターフェイスは、Iterableインターフェイスを拡張します。頻繁に使用されるキュー実装クラスには、LinkedList、PriorityQueue、ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、など。AbstractQueueは、キューの実装の労力を軽減するために、キューインターフェイスの骨格的な実装を提供します。

BlockingQueueタイプ

BlockingQueueには2つのタイプがあります。



Python用のAtomをセットアップする方法
  • 無制限のキュー: ブロッキングキューの容量はInteger.MAX_VALUEに設定されます。無制限のブロッキングキューの場合、キューは非常に大きなサイズになる可能性があるため、ブロックされることはありません。要素を追加すると、サイズが大きくなります。

構文:
BlockingQueueブロッキングキュー= new LinkedBlockingDeque()

  • 制限付きキュー: 2番目のタイプのキューは、制限付きキューです。制限付きキューの場合、キューコンストラクターでキューの容量をバイパスしてキューを作成できます。
    構文:
    //容量5のブロッキングキューを作成します

BlockingQueueブロッキングキュー=新しいLinkedBlockingDeque(5)

BlockingQueueインターフェイスのメソッド

タイプの変更 メソッド構文 のために使用される 説明
ブール値 追加(Eおよび) 挿入

容量制限に違反せずにすぐに実行できる場合は、指定された要素をこのキューに挿入します。成功するとtrueを返し、現在使用可能なスペースがない場合はIllegalStateExceptionをスローします。

ブール値 contains(オブジェクトo) 診る

このキューに指定された要素が含まれている場合はtrueを返します。

int drainTo(コレクションc) 取得または削除

このキューから使用可能なすべての要素を削除し、それらを指定されたコレクションに追加します。

int drainTo(コレクションc、int maxElements) 取得または削除

このキューから最大で指定された数の使用可能な要素を削除し、それらを指定されたコレクションに追加します。

ブール値 オファー(Eおよび) 挿入

容量制限に違反せずにすぐに実行できる場合は、指定された要素をこのキューに挿入します。成功するとtrueを返し、現在使用可能なスペースがない場合はfalseを返します。

ブール値 オファー(E e、長いタイムアウト、TimeUnit単位) 挿入

指定された要素をこのキューに挿入し、必要に応じてスペースが使用可能になるまで指定された待機時間まで待機します。

cチュートリアルのリンクリスト
IS poll(長いタイムアウト、TimeUnit単位) 取得または削除

このキューの先頭を取得して削除し、必要に応じて要素が使用可能になるまで指定された待機時間まで待機します。

ボイド put(E e) 挿入

指定された要素をこのキューに挿入し、必要に応じてスペースが使用可能になるのを待ちます。

int 残り容量() 診る

このキューが理想的に(メモリまたはリソースの制約がない場合に)ブロックせずに受け入れることができる追加要素の数を返します。固有の制限がない場合はInteger.MAX_VALUEを返します。

ブール値 remove(Object o)+ 取得または削除

指定された要素の単一のインスタンスをこのキューから削除します。存在する場合。

IS 取る() 取得または削除

このキューの先頭を取得して削除し、必要に応じて要素が使用可能になるまで待機します。

JavaのBlockingQueueインターフェイスの例:サービス

package com.journaldev.concurrency import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.BlockingQueue public class ProducerConsumerService {public static void main(String [] args){//サイズ10のBlockingQueueの作成BlockingQueue queue = new ArrayBlockingQueue( 10)プロデューサープロデューサー= new Producer(queue)コンシューマーconsumer = new Consumer(queue)//キュー内のメッセージを生成するためのプロデューサーの開始new Thread(producer).start()//キューからのメッセージの消費のためのコンシューマーの開始new Thread(consumer) .start()System.out.println( 'プロデューサーとコンシューマーが開始されました')}}

リストを並べ替えるc ++

これで、JavaのBlockingQueueインターフェイスの記事は終わりです。すべての概念が明確になったことを願っています。

チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。

質問がありますか?この「JavaのBlockingQueueインターフェイス」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。