こんにちは、私はjavaと並行プログラミングの初心者です。タスクキューを定義するために使用するたびに並行プログラミングで見たすべての例のうち、人々はブロッキングキューのさまざまな実装を使用しました。 なぜだけキューをブロックするのですか?利点と欠点は何ですか? なぜ他のデータ構造ではありませんか?スレッドプールタスクキューには、ブロッキングキューまたはその他のデータ構造のみを使用できますか?
-1
A
答えて
1
私が見ている特定されていないコードが特定のデータ構造を使用していて、他のものではない理由を正確には説明できません。しかし、ブロッキングキューには素晴らしいプロパティがあります。固定数の要素だけを保持し、その制限を超えてアイテムを挿入するプロデューサを強制的に待機させるのが実際の機能です。
キューサイズを制限すると、誤って動作するプロデューサからアプリケーションを保護しやすくなります。そうしないと、アプリケーションがメモリ不足になるまでキューにエントリを埋め込む可能性があります。明らかに、それを実行することがタスクにタスクを挿入する方が速く、エグゼキュータは作業に砲撃を受けるリスクがあります。
プロデューサを待機させると、システムに背圧がかかります。キューを使用すると、プロデューサはそれが遅れていることを知り、より多くの作業を受け入れることができなくなります。プロデューサーが待っているのは、キューを叩き続けるよりも良いのです。背圧はシステムを正常に劣化させる。
理解しやすいデータ構造を持ち、アプリケーションを構築する上で実用的なメリットがあり、タスクキューに適しているようです。もちろん、人々はそれを使うつもりです。
+0
答えのネイサンに感謝します。私は概要やアイデアを持っているのはなぜですか?:) –
関連する問題
- 1. Eclipse-EMFの内部データ構造を使用できますか?
- 2. 入れ子リストまたは他の構造ですか? c#
- 3. R:data.frame(または他のデータ構造)での高速乗算選択した行
- 4. バケットまたはダブルバケットのデータ構造とは何ですか?
- 5. バディヒープアルゴのデータ構造または実装
- 6. H2、HSQLDB、またはInputStreamを使用するその他の組み込みデータベース
- 7. ポインタをデータ構造にすることはできますか?
- 8. クラスまたは構造体内でスレッドローカル変数を使用できますか?
- 9. どのC#データ構造を使用すべきですか?
- 10. C++ STLには他にどのようなデータ構造がありますか?
- 11. 構造体またはポインタの構造体ですか?
- 12. pythonには組み込みのlinkedListデータ構造がありますか?
- 13. この問題を解決するために使用できるデータ構造またはデザインパターン
- 14. 実装ツリーとその他のデータ構造とruby
- 15. libumemはSolaris OSまたは他のOSでのみ利用できますか?
- 16. データをどのように構造化できますか?
- 17. 構造体はセッターインジェクションのインジェクションインスタンスを使用できません
- 18. TensoFlowは非構造化データを学習できますか?
- 19. Javaのテーブルにはどのようなデータ構造を使用できますか?
- 20. ジオコーディングに使用するデータ構造はどれですか?
- 21. FlaskリクエストにHTTP接続(またはその他のデータ)を保持することはできますか?
- 22. Pythonまたはその他のスクリプト言語をIIOPで使用
- 23. C#で使用するためのC++データ構造体/型(構造体、列挙型)を公開するには?
- 24. 解析されたSAXParser出力をHashMap /その他のデータ構造に変換します。
- 25. DOM操作とJavascriptデータ構造:フラットまたは構造化?
- 26. ファイルアップロードにHandler/AsyncTaskまたはその他のコンポーネントを使用
- 27. 提案されたデータとそのコンテナのクラス構造は?
- 28. データ構造メモリマップまたはDB?
- 29. EFまたはNHibernateを使用したリポジトリパターンの階層構造
- 30. CanCan(またはその他のプラグイン)を使用したカスタムRBAC
方法が広すぎる - 本の最初の数章を読むことをお勧めします。 Java Concurrency in Practice。 – slim
答えがスリムであることに感謝..それはあまりにも広い質問です。私はちょうどそれがなぜそうであるかというアイデアを得たいと思っていました。:) –