我有一组元素,对于每个元素,我都执行方法,将其作为 Runnable 传递给 CompletableFuture.runAsync() 。在执行过程中,可能需要停止整个计算,因此我在执行方法之前检查一些条件。如果计算应该停止,那么我会抛出一个异常,该异常在 CompletableFuture 之外处理。我想阻止所有 Runnables 的执行,这些 Runnables 在抛出异常后执行。因此,换句话说,当其中任何一个 CompletableFuture 抛出异常时,我不想等待所有 CompletableFuture 完成。
Set elements = ...
Executor executor = Executors.newFixedThreadPool(N);
try {
CompletableFuture.allOf(elements.stream().map(e - > CompletableFuture.runAsync(() - > {
if (shouldStop()) {
throw new MyException();
}
myMethod(e);
}, executor)).toArray(CompletableFuture[]::new)).join()
} catch (CompletionException e) {
...
}
慕田峪9158850
青春有我
至尊宝的传说
相关分类