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 转换成 CompletableFuture
CompletableFuture<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 添加失败或者成功的回调。可以添加多个,可以捕获到前面调用链抛出的异常。