gpt4 book ai didi

java - 通过多线程获取时保证​​文件内容的顺序

转载 作者:行者123 更新时间:2023-12-03 12:58:49 25 4
gpt4 key购买 nike

假设有 100 个文件编号从 1 到 100,您需要使用多线程并行读取这些文件。有没有办法按顺序打印这些文件的内容,即 1-100 ?

最佳答案

是的,前提是您可以将所有这些内容的内容保存在内存中。

基本思想是继续存储 Future到何时按顺序完成读取/处理文件,然后 get按照创建顺序来自 future 的值。

        List<String> filePathsInOrder = new ArrayList<>();
List<Future<String>> fileOutputsInOrder = new ArrayList<>();
for (String filePath : filePathsInOrder) {
fileOutputsInOrder.add(CompletableFuture.supplyAsync(() -> {
try {
return Files.readString(Paths.get(filePath));
}
catch (IOException e) {
throw new RuntimeException(e);
}
}));
}
for (Future<String> fileOutput : fileOutputsInOrder){
System.out.println(fileOutput.get());
}

您当然需要采取诸如异常处理之类的微妙之处,以防读取失败等。以上已完成,因为这超出了本问题的范围。

关于java - 通过多线程获取时保证​​文件内容的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com