Guava

    1. // 创建线程池
    2. ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
    3. // 提交任务
    4. ListenableFuture<String> listenableFuture = executorService.submit(() -> {
    5. return "result";
    6. });
    7. ListenableFuture<String> lFuture2 = Futures.transform(listenableFuture, input -> {
    8. System.out.println("lFuture2: " + input);
    9. return "lFuture2: " + input;
    10. });
    11. // 将 ListenableFuture 转换成 CompletableFuture
    12. 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 添加失败或者成功的回调。可以添加多个,可以捕获到前面调用链抛出的异常。