【发布时间】:2017-06-17 18:36:46
【问题描述】:
我一直在阅读有关并行流的article。它很冗长,我理解了与并行流如何工作有关的所有内容。我将引用我难以理解的部分:
"并行化需要: 用于执行子任务的线程池, 将初始任务划分为子任务, 将子任务分配给线程, 整理结果。 如果不输入详细信息,所有这些都意味着一些开销。它会在以下情况下显示惊人的效果:
某些任务意味着长时间阻塞,例如访问远程服务,或
同时运行的线程不多,尤其是没有其他并行流。
如果所有子任务都意味着密集计算,则潜在收益受限于可用处理器的数量。默认情况下,Java 8 将使用与计算机上的处理器一样多的线程,因此,对于密集型任务,结果高度依赖于其他线程可能同时在做什么。 当然,如果每个子任务本质上都在等待,那么收益可能看起来很大。"
我不明白上面以粗体突出显示的 2 个陈述。
第一句:有些任务意味着长时间阻塞,比如访问远程服务
我的理解是,与在并发编程环境而不是并行处理环境中执行的相同任务相比,相对性能提升会很大?
这个:当然,如果每个子任务本质上都在等待,收益可能看起来很大。
我不知道作者在这里是什么意思。
【问题讨论】:
-
他们说对于非计算受限的任务,并行化(或者实际上是并发)将带来不受计算资源总量限制的性能提升。
-
不,抱歉,我还是不明白。
标签: java multithreading performance parallel-processing java-stream