153得票11回答
分支/合并框架相对于线程池有什么优势?

使用新的fork/join框架相比于一开始就将大任务分成N个子任务,将它们发送到缓存线程池(来自Executors)并等待每个任务完成,有哪些好处呢?我无法看出使用fork/join抽象化简了问题或使解决方案比我们多年来拥有的更有效。 例如,教程示例中的并行模糊算法可以这样实现: publ...

92得票3回答
为什么在静态初始化程序中使用带有lambda的并行流会导致死锁?

我遇到了一个奇怪的情况,使用静态初始化程序中带有lambda表达式的并行流需要花费很长时间,但没有CPU利用率。以下是代码:class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -&gt...

88得票6回答
Java的Fork/Join与ExecutorService - 什么时候使用哪一个?

我刚刚阅读了这篇文章:Java-5 ThreadPoolExecutor 和 Java-7 ForkJoinPool 有什么优势? ,并且觉得答案不够明确。 您可以用简单的语言和例子解释一下,Java 7 的 Fork-Join 框架和旧方案之间的权衡是什么吗? 我还阅读了此主题的谷歌搜索...

79得票7回答
在Node.js中协调并行执行

node.js 的事件驱动编程模型使得协调程序流程有些棘手。 简单的顺序执行会被转换成嵌套回调,这很容易(虽然写起来有点费劲)。 但是并行执行怎么样呢?假设你有三个任务 A、B、C 可以并行运行,当它们完成时,你想将它们的结果发送给任务 D。 使用 fork/join 模型可以实现: ...

56得票5回答
Java ForkJoinPool创建线程的数量是由什么确定的?

据我所理解,ForkJoinPool池会创建一定数量的线程(默认为核心数),并且不会再创建更多的线程(除非应用程序通过使用managedBlock来指示需要更多线程)。 但是,通过使用ForkJoinPool.getPoolSize(),我发现在一个创建了30,000个任务(Recursiv...

54得票2回答
Fork/Join和Map/Reduce的区别

Fork/Join和Map/Reduce的关键区别是什么? 它们的区别在于分解和分发的方式(数据 vs. 计算)吗?

48得票2回答
Observable.forkJoin和数组参数

在Observables的forkJoin文档中,它说args可以是一个数组,但没有列出一个示例来展示如何使用: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.m...

44得票3回答
Java8的ForkJoinPool和Executors.newWorkStealingPool之间的详细区别是什么?

使用以下哪种方法时的低级差异是什么:ForkJoinPool = new ForkJoinPool(X); 和ExecutorService ex = Executors.newWorkStealingPool(X); 其中X是所需并行性水平,即运行的线程。 根据文档,我发现它们相似。此外,请...

29得票1回答
为什么Scala使用ForkJoinPool作为其默认ExecutionContext的支持?

在Scala中,如果不需要定义自己的全局 ExecutionContext,可以通过导入scala.concurrent.ExecutionContext.Implicits.global来使用全局执行上下文。 我的问题是为什么选择ForkJoinPool作为执行程序,而不是ThreadPo...

28得票1回答
Java ForkJoinPool非递归任务,工作窃取是否有效?

我希望通过一种方法将Runnable任务提交到ForkJoinPool中:forkJoinPool.submit(Runnable task) 注意,我使用的是JDK 7。 在底层,它们会被转换为ForkJoinTask对象。 我知道当任务递归地分成较小的任务时,ForkJoinPool非常...