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

标签 java multithreading scala concurrency io

我想知道就行业实践而言最好的方法是使用多线程方法读取文件。在 Java 中,我会执行以下操作:

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

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

最佳答案

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

files:Seq[File] = ...

可以使用files.par将其变成一个并行集合,然后使用map进行处理。 Map 将在内部使用线程池来并发处理部分序列。使用什么样的线程池可以configured .

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

关于java vs scala - 在单独的线程上读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788315/

相关文章:

java - 为什么合并排序用于 Android/Java API 中的对象?

java - Java中是否有任何(无限制的)公平阻塞队列?

java - 实现 Closeable 或实现 AutoCloseable

c++ - std::thread 没有异常(exception)?

java - 这种检测心跳的方法线程安全且一致吗?

java - Servlet 和下载文件

java - 如何使用线程中断方法停止线程

java - Scala 计数变量

java - Intellij 不尊重 build.sbt 中的某些选项

parsing - 从 Scala 字符串中去除 HTML 标签