当一个任务分叉时,究竟发生了什么?

时间:2017-05-21 18:45:18

标签: java multithreading fork fork-join

我已经明白分叉和加入用于多线程,但是我不明白什么,在分叉任务时确实发生了什么。分叉任务会导致分叉任务返回到计算方法的开头吗?或者该任务是否还有其他功能?如果我想要一个任务跳转到除计算之外的其他方法并在分叉时运行它,我该怎么告诉它这样做?我可以包含哪些(instance).fork();扩展名来指定此内容吗?

1 个答案:

答案 0 :(得分:0)

使用fork / join框架的任务实际上会将split递归到较小的子任务中,因此它们可以同时执行。 通过分叉,每个子任务可以由不同的CPU并行执行,也可以由同一CPU上的不同线程执行。 完成所有子任务的执行后,join部分开始。 在此过程中,所有子任务的结果以递归方式连接到单个结果中。 整个过程发生在幕后'并且可以使用名为ForkJoinPool的线程池来实现,该线程池管理ForkJoinWorkerThread类型的线程。