anyOf:方法的参数是多个给定的 CompletableFuture,当其中的任何一个完成时,方法返回这个 CompletableFuture。 allOf:方法用来实现多 CompletableFuture 的同时返回。 CompletableFuture的使用方式 import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;public class CompletableFutureTest...
1CompletableFuture<String>future2= CompletableFuture.supplyAsync(() ->{3if(true) {4thrownewRuntimeException("Computation error!");5}6return"hello!";7}).exceptionally(ex ->{8//CompletionException9System.out.println("exceptionally:" +ex.toString());10return"world!";11});12System.out.println(...
// 使用默认内置线程池执行任务,根据runnable构建执行任务,无返回值publicstaticCompletableFuture<Void>runAsync(Runnable runnable)// 使用自定义线程池执行任务,根据runnable构建执行任务,无返回值publicstaticCompletableFuture<Void>runAsync(Runnable runnable, Executor executor)// 使用默认内置线程池执行任务,根据supplyAsync...
CompletableFuture<String> goodsFuture = CompletableFuture.supplyAsync(() -> //模拟查询商品耗时500毫秒 { try { Thread.sleep(400); } catch (InterruptedException e) {e.printStackTrace(); } return "商品A"; }); System.out.println("获取用户信息:" + userFuture.get()); System.out.println("获取...
*/publicclassCompletableFutureDemo{publicstaticvoidmain(String[]args)throws ExecutionException,InterruptedException{// 直接执行无返回值的线程任务,这里的Runnable我们使用lambda表达式CompletableFuture f=CompletableFuture.runAsync(()->{try{TimeUnit.SECONDS.sleep(2);System.out.println(Thread.currentThread().getName...
通过CompletableFuture可以很轻松的实现CountDownLatch的功能,你以为这就结束了,远远不止,CompletableFuture比这要强多了。 比如可以实现:任务1执行完了再执行任务2,甚至任务1执行的结果,作为任务2的入参数等等强大功能,下面就来学学CompletableFuture的API。
简介:在Java中,CompletableFuture是一种强大的并发工具,用于执行异步计算并处理结果。它提供了一种简洁、灵活的方式来编写并发代码,同时避免了显式线程管理的复杂性。本文将介绍如何使用CompletableFuture来封装多线程执行并发任务的工具,并通过实例演示其用法和优势。
1、创建CompletableFuture CompletableFuture 提供了四个静态方法来创建一个异步操作。 publicstaticCompletableFuture<Void>runAsync(Runnablerunnable)publicstaticCompletableFuture<Void>runAsync(Runnablerunnable,Executorexecutor)publicstatic<U>CompletableFuture<U>supplyAsync(Supplier<U>supplier)publicstatic<U>CompletableFuture...
与此同时,Future无法解决多个异步任务需要相互依赖的场景,简单点说就是,主线程需要等待子线程任务执行完毕之后在进行执行,这个时候你可能想到了CountDownLatch,没错确实可以解决,代码如下。 这里定义两个Future,第一个通过用户id获取用户信息,第二个通过商品id获取商品信息。