有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程java与scala在单独线程上读取文件

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

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

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


共 (2) 个答案

  1. # 1 楼答案

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

    files:Seq[File] = ...
    

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

    files.par.map(readFile).foreach(process)
    
  2. # 2 楼答案

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