我有一个带有parallelStream()的测试代码,该代码将请求发送到服务器计算机。

Report report =
    requestsList.parallelStream()
                .map(request -> freshResultsGenerator.getResponse(request, e2EResultLongBL))
                .map(response -> resultsComparer.compareToBl(response, e2EResultLongBL,
                            astarHistogramsArrayBl, latencyHistogramBl))
                .reduce(null,
                        (sumReport, compare2) ->
                        {
                            if (sumReport == null) {
                                sumReport = new Report();
                            }
                            sumReport.add(compare2);
                            return sumReport;
                        },
                        (report1, report2) ->
                        {
                            Report report3 = new Report();
                            report3.add(report1);
                            report3.add(report2);
                            return report3;
                        });

这台计算机的负载太大,很快就会返回HTTP 404错误。

我没有在Google上找到答案的两件事:
  • parallelStream的默认线程数是多少(如果未自定义)
    放?
  • 如何将工作线程数设置为4?
  • 最佳答案

    Stream API使用 ForkJoinPool 执行并发任务。引用其文档:







    因此,要自定义线程数,可以将系统属性java.util.concurrent.ForkJoinPool.common.parallelism设置为所需的值:

    System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "4")
    

    将工作线程数设置为4。默认情况下,线程数将等于您拥有的处理器数。

    09-29 22:22