0

だから今、私はたくさんのモジュールを持っています。組み立てラインのようなものです。データが流れていて、各モジュールがそのデータに対して何らかの処理を行っている、または次のモジュールが前のモジュールが生成した出力を消費していると言えます。各モジュールは、スタンドアロンで再利用可能であることが期待されています。これは非常に典型的なシナリオだと思います。

そのため、最初に各モジュールのインターフェイスをモジュールとして設計しました(InputStreamは、OutputStream osです)。そのため、ソースに関係なくファイルを入力および出力として使用できます。データ フローについて考えると、前のモジュールの出力ストリームが次のモジュールの入力ストリームに移動します。しかし、Java には、OutputStream から InputStream にデータを取得する直感的で簡単な方法さえないことに気付きました。(注: この質問は、これを達成する方法に関するものではありません。興味のある 方は、OutputStream を InputStream に変換する方法を教えてください。 )

おそらく、OutputStream/InputStream はこのような目的のためのものではないように思えます。では、この場合のデータ フローを処理するためのインターフェイスを設計する最善の方法は何でしょうか?

4

2 に答える 2

1

離散オブジェクトの場合、 ConcurrentLinkedQueuesまたはBlockingQueuesでプロデューサー/コンシューマー パターンを使用できます。各モジュールには独自のキューがあり、継続的pollにそのキュー (またはtakeBlockingQueue の場合は使用) を行い、オブジェクトを処理offerし、次のモジュールのキューに送ります。

このパターンは、キューを介して渡す小さなバイト配列にチャンクする場合、バイト ストリームでも機能しますが、これが常に適切であるとは限りません (たとえば、module1 が読み取られ、module2 が圧縮され、module3 が暗号化される場合は、おそらくより適切です)。データをチャンク化する合理的な方法がない限り、データをストリームに保持しないでください)。

于 2013-05-01T02:24:51.067 に答える