Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,什么时候Fork/Join执行器优先于线程池执行器?_Java_Multithreading_Executorservice_Fork Join - Fatal编程技术网

在Java中,什么时候Fork/Join执行器优先于线程池执行器?

在Java中,什么时候Fork/Join执行器优先于线程池执行器?,java,multithreading,executorservice,fork-join,Java,Multithreading,Executorservice,Fork Join,在Java 7/8中,什么样的示例真实场景可以证明使用fork/join执行器而不是线程池执行器是合理的?fork-join框架应该用于可以递归地分解为较小部分的任务。 您可以使用简单的线程池来实现这一点,但是您需要编写更多的代码 在网上搜索“分而治之算法”,你会发现很多例子。为什么是-1?当人们-1而不告诉你原因时,这不是一件好事。同意,这也不是一个“太宽泛”的问题(尽管它可能是重复的)。fork-join池具有窃取工作的特性:当执行任务调用join()时,它可能会将其线程放弃给另一个任务。这

在Java 7/8中,什么样的示例真实场景可以证明使用fork/join执行器而不是线程池执行器是合理的?

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


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

为什么是-1?当人们-1而不告诉你原因时,这不是一件好事。同意,这也不是一个“太宽泛”的问题(尽管它可能是重复的)。fork-join池具有窃取工作的特性:当执行任务调用
join()
时,它可能会将其线程放弃给另一个任务。这对于类似并行合并排序的应用程序非常有用:使用普通的executor服务,可以启动子排序的任务,但父任务在等待子排序时仍保留线程。因此,线程很快就会用完。相比之下,fork-join池可能会使用父任务的线程来运行子任务。