Guava
// 创建线程池ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());// 提交任务ListenableFuture<String> listenableFuture = executorService.submit(() -> {return "result";});ListenableFuture<String> lFuture2 = Futures.transform(listenableFuture, input -> {System.out.println("lFuture2: " + input);return "lFuture2: " + input;});// 将 ListenableFuture 转换成 CompletableFutureCompletableFuture<String> future = ListenableFuturesExtra.toCompletableFuture(listenableFuture);
MoreExecutors.listeningDecorator(ExecutorService delegate):装饰器,将线程池转换成 Listening 的
Futures.transform(ListenableFuture, Function, Executor):将 Function 拼接到 ListenableFuture 后面
Futures.transformAsync(ListenableFuture, AsyncFunction, Executor):将 AsyncFunction 拼接到 ListenableFuture 后面,AsyncFunction 里面需要返回一个 ListenableFuture
Futures.addCallback(ListenableFuture, FutureCallback, Executor):给 Future 添加失败或者成功的回调。可以添加多个,可以捕获到前面调用链抛出的异常。
