私は、バッファを使用してスレッド間でオブジェクトを渡すJavaアプリケーションを公開しています。一般的に私はBufferUtilsを使ってこれらのバッファを同期させます。バッファにオブジェクトを追加するスレッドが1つしかなく、バッファからオブジェクトを削除して削除するスレッドが1つしかない場合は、そのオブジェクトを削除します。それらの間のバッファは同期する必要がありますか?1つのスレッドだけが追加され、1つの(異なる)スレッドのみが削除される場合、バッファを同期させる必要がありますか?
問題の2つのスレッドがスプリング・ビーンからインスタンス化され、両方が参照するバッファー用に3番目のBeanを持つことによって、共有バッファーにしか手を出せない状況があります。私は、Beanから同期化されたバッファを作る方法を理解できなかったので、それが必要かどうかという疑問がありました。
これは私が必要な正確に何をした、ありがとう。さらに、オブジェクトを追加するタイムアウトのためのいくつかの非常に優れたメソッドを持っています.BufferOverflowをキャッチする代わりにaddでブール値を返します。本当にありがとう! – tdimmig
これはほぼ第2の質問ですが、全く新しい投稿をする価値はほとんどありません。パフォーマンスが向上する限り、BlockingQueueがBufferUtilsと同期したバッファとどのように比較されているか知っていますか? – tdimmig
(非常に)遅れて返信して申し訳ありません。あなたは本当に確かめるためにいくつかのテストを実行する必要があります。 BlockingQueueのバリアントはよく書かれ、効率的です。 Java 5で追加された並行パッケージの一部ですが、誤解されていない場合はそうです。しかし、最終的には、あなたが使用した方法があなたに合っているかどうかを確認するために、いくつかのテストを行い、いくつかの測定を行う必要があります。使用可能なクラスを見て、Array backまたはLinkedListでサポートされているキューから選択することができます。詳細については、上記のドキュメントを参照してください。乾杯、ティベリ –