Java的Fork/Join vs ExecutorService - 何时使用哪个?

我刚刚读完了这篇文章:Java-5 ThreadPoolExecutor比Java-7 ForkJoinPool有什么优势?我觉得答案不够直接。

您能用简单的语言和示例解释一下,Java 7的Fork-Join框架和较旧的解决方案之间有什么权衡吗?

我还阅读了Google关于Java主题的#1命中:何时使用forkJoinPool与 javaworld.com executorService,但这篇文章没有回答标题问题,当,它主要谈论api差异...


答案 1

分叉连接允许您轻松执行分而治之的作业,如果要在 中执行分叉连接,则必须手动实现这些作业。在实践中,通常用于同时处理许多独立请求(也称为事务),并在想要加速一个连贯的作业时进行分叉连接。ExecutorServiceExecutorService


答案 2

分叉连接特别适用于递归问题,其中任务涉及运行子任务,然后处理其结果。(这通常被称为“分而治之”...但这并不能揭示本质特征。

如果你试图使用传统的线程(例如,通过ExecutorService)来解决像这样的递归问题,你最终会得到线程的束缚,等待其他线程向它们提供结果。

另一方面,如果问题不具有这些特征,则使用分叉连接没有真正的好处。


引用:


推荐