java vs scala - 在单独的线程上读取文件

时间:2012-10-08 19:38:25

标签: java multithreading scala concurrency io

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

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

Reader会生成另一个线程来生成结果,然后使用工作线程回调Listener。这会是一个好方法吗?这将如何转化为Scala,它可能有其他更好的机制来实现这一目标?

2 个答案:

答案 0 :(得分:7)

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

files:Seq[File] = ...

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

files.par.map(readFile).foreach(process)

答案 1 :(得分:1)

如果您想要一种替代方法,这似乎是Akka的一个很好的用例。