我正在尝试编写一个小程序来解决在Java中使用多线程的以下问题。我正在努力甚至不知道从哪里开始,并且正在寻找一些建议。该过程中所需的步骤如下:
我已经编写了wordcount函数,并且可以正常工作,但是想更多地了解如何对该操作进行多线程处理,以便读取文件,计算单词数,然后将输出全部并行编写。
答案 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
开头的示例。