java 递归取消所有的CompletableFuture

bluesky1年前 ⋅ 179 阅读

ChatGPT的回答仅作参考:

以下是一个示例代码,用于递归取消所有的CompletableFuture:

```
public static void cancelAllFutures(CompletableFuture<?> future) {
    if (!future.isDone()) {
        future.cancel(true);
    }
    if (future instanceof CompletableFuture[]) {
        CompletableFuture<?>[] futures = (CompletableFuture<?>[]) future;
        for (CompletableFuture<?> f : futures) {
            cancelAllFutures(f);
        }
    } else if (future instanceof CompletableFuture) {
        CompletableFuture<?> f = (CompletableFuture<?>) future;
        if (f.isCompletedExceptionally()) {
            try {
                f.get();
            } catch (CancellationException e) {
                // ignore
            } catch (Exception e) {
                // ignore
            }
        } else {
            cancelAllFutures(f);
        }
    }
}
```

该方法接受一个CompletableFuture作为参数,并递归取消所有的CompletableFuture。如果传入的CompletableFuture已经完成,它将被取消。如果传入的CompletableFuture是一个CompletableFuture数组,它将递归取消数组中的所有CompletableFuture。如果传入的CompletableFuture是一个已经完成异常的CompletableFuture,它将忽略它。否则,它将递归取消CompletableFuture。

全部评论: 0

    相关推荐