我有一个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
重申一下,我想对此进行调整,以便每次文件迭代都启动一个新线程。
答案 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
});