Java多线程文件读取+操作+写入

时间:2018-11-16 22:01:01

标签: java multithreading

我正在尝试编写一个小程序来解决在Java中使用多线程的以下问题。我正在努力甚至不知道从哪里开始,并且正在寻找一些建议。该过程中所需的步骤如下:

  1. 读入给定目录中包含的所有文本文件
  2. 为每个读取的文件创建一个字数统计。
  3. 将单词数写为另一个目录中新文件的输出。

我已经编写了wordcount函数,并且可以正常工作,但是想更多地了解如何对该操作进行多线程处理,以便读取文件,计算单词数,然后将输出全部并行编写。

2 个答案:

答案 0 :(得分:1)

您可以共享单线程版本吗?从概念上讲,它可以像这样简单(伪Java代码)。 countWords和writeOutput是您的方法, 文件是您已经读过的文件的列表。

files.parallelStream()
    .map(file -> new Pair(file, countWords(file)))
    .forEach((file, count) -> writeOutput(file, count));

答案 1 :(得分:0)

我喜欢您对学习多线程编程的热情!
除了在文件之间并行执行任务外,还可以并行并优化实际的countWords任务。

这是使用Fork / Join的经典案例。多线程编程的水平相当高,但令人满意的是:)

您可以在网络上搜索类似于您自己的示例,以下是一个以https://www.baeldung.com/java-fork-join

开头的示例。