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

Bob*_*r02 7 java io concurrency multithreading scala

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

class Reader {  Result readFile(File file, Listener callback) }
class Listener { void process(Result r) }
Run Code Online (Sandbox Code Playgroud)

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

Kim*_*bel 7

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

files:Seq[File] = ...
Run Code Online (Sandbox Code Playgroud)

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

files.par.map(readFile).foreach(process)
Run Code Online (Sandbox Code Playgroud)