Fork-Join线程池中的长时间运行任务是否可以阻止所有线程?

Kri*_*raj 4 java multithreading java-8 forkjoinpool java-stream

我一直在学习Java 8的并行流,这篇文章出现在Google搜索的第一页上.我无法理解文章中的这一特定内容

...所有并行流都使用公共fork-join线程池,如果您提交长时间运行的任务,则可以有效地阻止池中的所有线程.

我无法弄清楚长时间运行的任务如何阻止池中的所有其他线程.

Hol*_*ger 7

在此语句中,"提交长时间运行的任务"意味着"使用并行流执行长时间运行的任务".这是并行流处理的目的,分割工作并分发到公共线程池的所有工作线程.

此池具有许多配置为使用所有CPU核心的线程,如果所有核心都忙,则已达到该目标.

如果通过等待I/O操作的完成来阻止这些线程,则会出现问题.然后,不利用CPU核心,这不仅会降低其他并行流的性能,即使在相同的操作中,并发I/O操作的最佳数量可能与CPU核心的数量完全不同.

结论是Stream API不适合并行I/O操作.