我的示例代码如下:
ExecutorService ex = Executors.newFixedThreadPool(3);
List
ex.invokeAll(job);
我有 3 个作业并行运行,其中一个作业失败,它不应该恢复其他作业。我希望它等待所有作业完成(成功或失败),然后更新状态。需要帮助来处理这个用例
尝试使用afterExecute
如果提交给执行器服务的作业失败,不会影响其他作业。
所以你只需要等到工作完成即可。最直接的方法就是获取 Futures 结果:
ExecutorService ex = Executors.newFixedThreadPool(3);
List<Callable<Void>> job = new ArrayList<>();
List<Future<Void>> futures = ex.invokeAll(job);
for (Future<Void> future : futures) {
try {
future.get();
// job succeed
} catch (ExecutionException e) {
// job failed
}
}