7

マルチスレッド アプローチを使用してファイルを読み取ることが、業界の慣例として最も優れている方法を知りたいと思います。Java では、次のようなことを行います。

class Reader {  Result readFile(File file, Listener callback) }
class Listener { void process(Result r) }

リーダーは別のスレッドを生成して結果を生成しListener、作業スレッドから をコールバックします。これは良いアプローチでしょうか?これは、おそらくこれを達成するための他のより良いメカニズムを持っている Scala にどのように変換されるでしょうか?

4

2 に答える 2

7

Scala でのアプローチの 1 つは、並列コレクションを使用することです。一連のファイルがあるとします。

files:Seq[File] = ...

を使用して並列コレクションに変換し、files.parmap を使用して処理を行うことができます。Map は内部的にスレッド プールを使用して、シーケンスの一部を同時に処理します。使用するスレッド プールの種類を構成できます

files.par.map(readFile).foreach(process)
于 2012-10-08T19:47:00.960 に答える
1

別のアプローチが必要な場合、これはAkkaの適切な使用例のようです。

于 2012-10-08T19:46:34.033 に答える