CompletableFuture 不调用get
时间: 2023-11-07 22:58:54 浏览: 89
CompletableFuture 不调用 get 方法是比较常见的用法,因为 get 方法会阻塞当前线程,等待 CompletableFuture 的执行结果返回。如果在主线程中调用 get 方法,就会导致主线程被阻塞,无法继续执行其他任务,影响程序的响应性能。
相反,CompletableFuture 提供了一系列非阻塞方法,可以利用回调函数或者组合操作来处理 CompletableFuture 的执行结果。比如:
1. thenApply(Function<? super T,? extends U> fn):对 CompletableFuture 的执行结果进行转换,返回一个新的 CompletableFuture。
2. thenAccept(Consumer<? super T> action):对 CompletableFuture 的执行结果进行消费,没有返回值。
3. thenRun(Runnable action):当 CompletableFuture 执行完毕后,执行一个 Runnable 任务。
4. whenComplete(BiConsumer<? super T,? super Throwable> action):对 CompletableFuture 的执行结果和异常进行处理,没有返回值。
5. exceptionally(Function<Throwable,? extends T> fn):当 CompletableFuture 执行出现异常时,进行处理,返回一个新的 CompletableFuture。
通过这些方法,可以在不阻塞主线程的情况下,对 CompletableFuture 的执行结果进行处理,并且可以利用 CompletableFuture 的异步执行特性,提高程序的响应性能。
阅读全文