【问题标题】:When is Fork/Join executor preferred to a Thread Pool executor in Java? [closed]什么时候 Fork/Join 执行器优先于 Java 中的线程池执行器? [关闭]
【发布时间】:2015-03-05 16:14:36
【问题描述】:

哪些现实世界场景示例可以证明在 Java 7/8 中使用 fork/join 执行器而不是线程池执行器是合理的?

【问题讨论】:

  • 为什么是-1?当人们 -1 并且不告诉你原因时,这并不好。
  • 同意,这也不是一个“太宽泛”的问题(尽管它可能是重复的)。 fork-join pool 具有工作窃取功能:当您执行的任务调用join() 时,它可能会将其线程放弃给另一个任务。这对于并行合并排序之类的应用程序很有用:一个普通的执行器服务,你为子排序启动任务,但你的父任务在等待子进程时仍然持有线程。结果,您很快就会用完线程。相比之下,fork-join 池可能会占用父任务的线程来运行子任务。

标签: java multithreading executorservice fork-join


【解决方案1】:

fork-join 框架应该用于可以递归分解成更小部分的任务。 您可以使用简单的线程池来做到这一点,但是您需要编写更多代码。

在网上搜索“分治算法”,你会发现很多例子。

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 2022-01-18
    • 2014-08-27
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多