gpt4 book ai didi

java - Java Parallel Stream 与 ExecutorService 的性能对比

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:01:03 26 4
gpt4 key购买 nike

假设我们有一个列表,想要选择所有满足某个属性的元素(比如说一些函数 f)。有 3 种方法可以并行此过程。

一个:

listA.parallelStream.filter(element -> f(element)).collect(Collectors.toList());

两个:

listA.parallelStream.collect(Collectors.partitioningBy(element -> f(element))).get(true);

三:

ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
//separate the listA into several batches
for each batch {
Future<List<T>> result = executorService.submit(() -> {
// test the elements in this batch and return the validate element list
});
}
//merge the results from different threads.

假设测试函数是一个 CPU 密集型任务。我想知道哪种方法更有效。非常感谢。

最佳答案

一和二使用专为并行处理一个任务而设计的ForkJoinPool,而ThreadPoolExecutor用于并发处理独立任务。所以一和二应该更快。

关于java - Java Parallel Stream 与 ExecutorService 的性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52287137/

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