有一个包含 5000 个项目的列表。我想通过 Future 并行化列表处理过程。我尝试过的选项之一是在每次迭代中通过 Future 执行。我使用 fixedThreadPool(10) 作为 ExecutorContext。查看代码
val list = List("Ivan", "Sergey", "Victor")
for(name <- list) {
Future { //do something with name }
}
无法正确处理。尝试添加每个名称和基础 - 添加所有列表的一小部分。这可能是因为我没有等待 Future 执行。为什么会发生这种情况以及如何正确并行化列表中的工作?谢谢你。
没错,
Future
您在单独的线程中创建和执行。我们需要Await
一个在主线程中等待它们的人。我们创建了一个单独的线程池,特别是对于我们的列表:
在这里,我们通过名称浏览整个列表并在不等待完成的情况下运行它们:
我们创建另一个
Future
等待整个列表的列表:Future
我们将等待的正是这个:英语