当前位置: 首页 > 知识库问答 >
问题:

Java的fork/join vs ExecutorService-何时使用Which?

师俊健
2023-03-14

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

您能用简单的语言和示例解释一下Java7的Fork-Join框架和旧的解决方案之间的权衡吗?

我还从javaworld.com上读了谷歌的第一篇文章“Java提示:何时使用ForkJoinPool vs ExecutorService”,但这篇文章并没有回答标题中的“何时”问题,它主要讨论的是api的差异...

共有1个答案

饶元章
2023-03-14

Fork-join允许您轻松地执行分而治之的作业,如果要在executorservice中执行,则必须手动实现这些作业。在实践中,executorservice通常用于并发处理许多独立的请求(aka事务),而fork-join则用于加速一个连贯的作业。

 类似资料:
  • 问题内容: 以下两种方法有什么区别? 什么时候需要使用fork,什么时候不需要? 问题答案: 通常,当传奇需要启动非阻塞任务时很有用。这里的非阻塞意味着:调用方启动任务并继续执行,而无需等待任务完成。 在许多情况下这可能有用,但主要有2种情况: 按逻辑域对Sagas进行分组 保留对任务的引用,以便能够取消/加入该任务 您的顶级传奇故事可能是第一个用例的示例。您可能会遇到类似: 其中可能包括了诸如:

  • 问题内容: 您能用简单的语言和示例来说明Java 7的Fork-Join框架与较旧的解决方案之间 的权衡 吗? 我还阅读了Google在主题Java技巧上的第一名:何时使用javaworld.com上的ForkJoinPool与ExecutorService,但是本文没有回答 when 的标题问题,它主要谈论api的区别… 问题答案: 通过Fork-join,您可以轻松执行分割和征服作业,如果要在

  • 我阅读了Java 7中引入的Fork/Join框架的实现,我只是想检查一下我是否理解这种魔力是如何工作的。 据我所知,当一个线程分叉时,它会在其队列中创建子任务(其他线程可能会也可能不会窃取)。当线程尝试“加入”时,它实际上会检查其队列中的现有任务,然后递归地执行这些任务,这意味着对于任何“加入”操作,将向线程调用堆栈中添加2个帧(一个用于加入,另一个用于新执行的任务调用)。 据我所知,JVM不支

  • 本文向大家介绍Java Fork/Join框架,包括了Java Fork/Join框架的使用技巧和注意事项,需要的朋友参考一下 Fork/Join框架是ExecutorService接口的一个实现,通过它我们可以实现多进程。Fork/Join可以用来将一个大任务递归的拆分为多个小任务,目标是充分利用所有的资源尽可能增强应用的性能。 和任何ExecutorService接口的实现一样,Fork/Jo

  • 问题内容: 我目前正在学习,并且对组合的效率存在疑问。 向我显示了以下标准代码: 我知道这会克隆整个过程(复制整个堆等),并用新程序替换当前地址空间。考虑到这一点,使用该组合是否会导致效率低下?我们正在复制进程的整个地址空间,然后立即覆盖它。 所以我的问题是: 即使我们浪费了,使用此组合(而不是其他解决方案)有什么好处呢? 问题答案: 使用此组合(而不是其他解决方案)有什么好处,即使我们有浪费,该

  • 问题内容: 我正在尝试使用Java创建一个小程序来分叉两个新的子进程。它是针对初学者的编程课程的,他们的教程都使用C语言编写,因此,我正在寻求一些帮助,以了解此技巧,以及将其适应基于Java的程序的最佳方法(最终在它)。 更新: 我应该给每个子进程及其父进程附加一个ID,在子进程执行时打印信息,并在终止时打印终止通知。现在,我看到上面的这段代码列出了当前目录的内容,并在进程终止时显示“ Child