質問

私の質問に関連 この質問 います。場を利用しているキューコミュニケーションの場と生産者と消費者のスレッドが、一般の人が使用をお勧めし LinkedBlockingQueue または ConcurrentLinkedQueue?

か、そのメリット/デメリットの使用にも無理です。

主な違いらしいAPIの視点があることで LinkedBlockingQueue 可囲.

役に立ちましたか?

解決

プロデューサー/消費者のスレッド、無いんだが ConcurrentLinkedQueue でも妥当なオプションでを実装しない BlockingQueue, の基本的なインタフェースプロデューサー/消費者行列と思う。思いま話 poll(), ビビットだかな、そして世論調査で再び。大遅れ時に新しい項目が、非効率での空より目覚め必要以上にか眠).

からのドキュメントのためのBlockingQueue:

BlockingQueue 実装に使用できるよう設計され、主に生産者-消費者行列

知っていません というだけブロックキューに用いるべきである生産者-消費者行列ができ...

他のヒント

この質問に値より良い答えです。

Javaの ConcurrentLinkedQueue あの有名な アルゴリズムによるMaged M.マイケルマイケル-L.スコット のための 非ブロックロック-無料 ます.

"非ブロック"としてこちらに他の主要先進国では資源(キュー)との如何にかかわらず、プラットフォームにおけるスケジューラは、を中断するスレッド、またはスレッドであるというだけでも遅いので、他のスレッドを設計するために、同じ資源ることはできます。場合にロックが関わったとえば、スレッドのロックが中断することは、すべてのスレッドを待つことロックが遮断される。固有ロックの synchronized キーワード)をJavaでご利用いただけます。厳しい罰則のパフォーマンスが バロック の関与について競合により、また、VMの決議"を膨らませ"をロックした後、スピン間ブロックを設計するスレッド...ではなぜ多くのコンテキスト(シナリオの企業からの競合)、その比較は、セット原子に参照でき、より効率的なのは、まさにこのような多くの非ブロックデータ構造をしています。

Javaの ConcurrentLinkedQueue は非ブロックでのカビプロデューサーな騰を余儀なくされるのです。単一のプロデューサー/シングル消費者のシナリオ(SPSCこりつつあることを実感していることはありません宣言です。複合プロデューサー/シングル消費者のシナリオでは、消費者はなく、生産者である。このキューはおいて競合が生産して offer(), その並行処理による定義で設定します。では基本的には一般的な目的-効率的な非ブロックキューに挿入します

それについて BlockingQueue, を、ブロックは、スレッドを待機キューではfreakishlyひどいの設計並行システム。位置づけはどうなるんですか。できない場合はよいのかを使用 ConcurrentLinkedQueue は、消費者/プロデューサーのシナリオ、キャラクター設定を切り替え高度に抽象化のように俳優良い。

LinkedBlockingQueue ブロック、消費者やプロデューサーのキューが空のクラシックショート、それぞれの消費者/プロデューサーのスレッドが入ります。このブロック機能付コスト:毎けや操作ロック競合している間は、生産者や消費者が多く、シナリオを多くの生産者-消費者の動作が遅くなります。

ConcurrentLinkedQueue は使用しないロックが CAS, は、その入れて持っているのは、業務の有効活用する競合の多くの生産者と消費者のスレッド)。では、"待つ無料"データ構造 ConcurrentLinkedQueue ませんのブロックが空いことを意味し、消費者に必要なもの take() 帰国 null 値に"忙しい待ち"としては、例えば、消費者のスレッド食CPUを搭載しています。

ったことをあまりに消費者のスレッドを率い消費量/生産等ベンチマークはそれぞれのシナリオに対する

一特定の用途の場合は ConcurrentLinkedQueue 明らかに良くなる生産者が最初うなものを作る仕上がり仕事に、キュー にのみ後 消費者が消費るということを知ることに行う場合のキューは空になります。(こちらは並行処理と生産者-消費者のもと生産者-生産者と消費者の消費者向け)

他のソリューション(ない規模できるランデブール:java.util.兼SynchronousQueue

の場合のキューには、可能な限り最高の性能と含んだプロデューサー/消費者ます。利用できるlocklessキューなロックのデータアクセス)などです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top