gpt4 book ai didi

java - 使用parallelStream 执行独立任务?

转载 作者:行者123 更新时间:2023-12-01 19:33:02 25 4
gpt4 key购买 nike

我有一个任务列表。每个任务彼此独立(它们不使用彼此的结果)。

当有 1000 个任务并使用顺序流来处理这些任务时..

tasks.forEach(task->{
// long running task
task.run();
System.out.println("Thread: " + Thread.currentThread().getName());
});

..然后,第二个任务在第一个任务之后运行,依此类推。循环以阻塞和顺序模式运行(第二个任务仅在第一个任务完成后才完成)。

并行处理每个任务的最佳方式是什么?

这是最好的方法吗?

tasks.parallelStream().forEach(task->{
// long running task
task.run();
System.out.println("Thread: " + Thread.currentThread().getName());
});

根据Should I always use a parallel stream when possible? ,应避免使用并行流。就我而言,这些任务是相互独立的,我不需要使用parallelStream()带来的同步开销。但是,使用parallelStream() 时没有选项可以禁用同步开销。或者?

对于我的用例来说,有比parallelStream()更好的方法吗?

最佳答案

在 Java 8 parallelStream() 中,使用 ForkJoinCommonPool,它在 JVM 启动时初始化,并包含固定数量的线程,更适合可以遵循“分而治之”的范式。就您而言,由于它们都是隔离的,因此使用 ExecutorService 可能更合适。

关于java - 使用parallelStream 执行独立任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984189/

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