7

我想知道在行业实践方面最好的方法是使用多线程方法读取文件。在Java中,我会做以下事情:

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

ListenerReader 将生成另一个线程以生成结果,然后从工作线程中回调。这是一个好方法吗?这将如何转化为 Scala,它可能有其他更好的机制来实现这一点?

4

2 回答 2

7

Scala 中的一种方法是使用并行集合。假设您有一系列文件:

files:Seq[File] = ...

您可以使用将其转换为并行集合files.par,然后使用 map 进行处理。Map 将在内部使用线程池同时处理部分序列。可以配置使用什么样的线程池。

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

如果您想要另一种方法,这对于Akka来说似乎是一个很好的用例。

于 2012-10-08T19:46:34.033 回答