0

サマライザーを構築していて、パイプラインの実装が必要です。私は独自の実装を使用しましたが、作業が大きくなるにつれて、それではうまくいかないことがわかりました。

基盤 (基本的には同期ロジック) を提供する Java の成熟したフレームワークはありますか?

ステージを宣言する必要があり、各ステージにはワーカーがあり、ワーカーはアイテムを処理して結果をステージに返し、ステージはそれを次のステージに送信します (ファンアウトする可能性があります)。

私の実装の要点は、この基盤を提供することでしたが、適切に機能しません (デッドロックをもたらす競合状態)

apache ライブラリ (基本的には死んでいます) を取得しようとしましたが、ステージ ワーカーを作成する機能がありません。

4

2 に答える 2

0

すべてのステージをブロッキング キューに接続するだけで、すべてが確実に機能します。制限付きArrayBlockingQueueを使用して、プロデューサーがコンシューマーよりも高速に動作する場合にキューの飽和を回避します。

ほとんどのパイプライン/データフロー/アクター フレームワークは非常に小さいタスクを処理するため、単一のスレッドをステージに割り当てるだけでもオーバーヘッドになるため、ステージはスレッド プールを共有し、作業スレッドの数が制限されます。(おそらく) ステージごとに複数のスレッドを利用する唯一のフレームワークはFBPですが、よくわかりません。

于 2013-10-06T18:22:04.723 に答える