Java多线程处理文本文件

时间:2018-11-19 17:14:52

标签: java multithreading

我有一个Java程序,该程序读取并遍历目录中的每个文本文件,创建一个单词索引(word:它出现在哪个页面上),并将每个文件的输出打印到输出目录中。我想将其转换为对每个文件利用多线程的程序(为每个文件启动一个新线程)。我是Java的新手,也是Java多线程的新手。输入为: implementation (group: 'com.jayway.jsonpath', name: 'json-path', version: '2.0.0'){ exclude group: 'org.ow2.asm', module: 'asm' exclude group: 'com.google.code.gson' exclude group: 'com.fasterxml.jackson.core' exclude group: 'org.objectweb.asm' }

这是我没有多线程的工作代码:

java Index inputFolder outputFolder pageLength

重申一下,我想对此进行调整,以便每次文件迭代都启动一个新线程。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Java 1.8+,则可以使用streams API。

.parallelStream()将并行执行任务,并为每个任务分配一个线程。

您需要一个列表来调用流API

List<File> files = new ArrayList<>(); //initialization

//populate list here

files.parallelStream()
     .forEach(x->{
       //logic goes here
      });

Example Repl.it

Documentation about paralellism