接下来我将详细介绍CompletableFuture的实现。 Future接口 CompletableFuture实现自JDK 5出现的Future接口,该接口属于java.util.concurrent包,这个包提供了用于并发编程的一些基础设施,其中就包括 Future 接口。Future接口的目的是表示异步计算的结果,它允许你提交一个任务给一个 Executor(执行器),并在稍后获取任务的结果。
通过CompletableFuture 提供的进一步封装,可以很容易实现Future模式那样的异步调用。 实例如下: importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.ExecutionException;publicclassAsyncTaskUseCompletableFuture {publicstaticvoidmain(String[] args)throwsInterruptedException, ExecutionException {finalCompletabl...
publicstaticvoidmain(String[]args)throws ExecutionException,InterruptedException{CompletableFuture<String>completableFuture=newCompletableFuture();//自己开个线程去执行 执行完把结果告诉completableFuture即可newThread(()->{// 模拟执行耗时任务System.out.println("task doing...");try{Thread.sleep(3000);System....
CompletableFuture 实现了 Future 和 CompletionStage 接口。 public class CompletableFuture<T> implements Future<T>, CompletionStage<T> {} CompletableFuture 类提供以下方法构造 CompletableFuture 对象。 public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) {} public static CompletableFuture<...
首先,我们来看一个基本的CompletableFuture示例。 packagecn.juwatech.future;importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.ExecutionException;publicclassBasicUsage{publicstaticvoidmain(String[] args){ CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {// 模拟耗时...
除了实现CompletionStage接口,CompletableFuture也实现了future接口, 代表一个未完成的异步事件。CompletableFuture提供了方法,能够显式地完成这个future,所以它叫CompletableFuture。 1、 创建一个完成的CompletableFuture 最简单的例子就是使用一个预定义的结果创建一个完成的CompletableFuture,通常我们会在计算的开始阶段使用它...
CompletableFuture 的内部组件: 1.ForkJoinPool: CompletableFuture 依赖于 Java 7 中引入的 ForkJoinPool 来并行执行任务。它有效地管理工作线程并提供并行工作的机制。CompletableFuture 使用该池来执行异步任务,确保最佳的资源利用率。 2、执行器: CompletableFuture 允许您指定一个执行器来控制 CompletableFuture 完成其...
thenApply 方法接收当前 stage 的结果并计算新的结果 84,赋值给新一个 CompletableFuture 实例。 handle 方法检测到当前 stage 没有异常,但是判断结果大于 80 所以抛出一个异常。 whenComplete 方法检测到当前 stage 结果为 null,并且抛出异常,所以尝试抛出一个新的异常。
CompletableFuture 是Future API的扩展。 Future 被用于作为一个异步计算结果的引用。提供一个isDone()方法来检查计算任务是否完成。当任务完成时,get()方法用来接收计算任务的结果。 从Callbale和 Future 教程可以学习更多关于 Future 知识. Future API 是非常好的 Java 异步编程进阶,但是它缺乏一些非常重要和有用的特...
Suppose you want to execute some code that queries a database so the code is executed in a separate thread and then trigger the printing of the query result when it is available. Using a well-known pattern introduced in Java 5, you could wrap the task to