首页 > 解决方案 > 在 Java 中“即时”生成并行执行任务

问题描述

我有一些要在 Java 中并行执行的任务。我想根据我“实时”收集的数据生成下一个任务来执行自己的任务(主要取决于哪些其他任务已经完成以及它们的结果是什么)。

理想情况下,我正在寻找一个像这样构造的执行器:

new CallbackThreadPoolExecutor(Iterator<Callable<T>> generator)

我想生成器有一些关于执行进度的内部状态记录信息,并且基于这些信息,每当调用 next() 时,它都会生成下一个任务。

典型应用: 假设给定一个有向无环图,其顶点是任务,其边代表依赖关系。只有当它的所有祖先都完成时,我们才能执行一项任务。我们想使用多个工作人员来处理所有任务,但是由于我们不知道每个任务需要多长时间,我们希望仅在工作人员空闲时选择下一个任务分配给工作人员,基于最多图的-to-date 状态(理想情况下,我们只想选择祖先已经完成的任务;在这些任务中,也许我们希望优先考虑具有许多依赖项的任务)。

标签: parallel-processingschedulingexecutorservicethreadpoolexecutorforkjoinpool

解决方案


推荐阅读