Java CompletableFuture:thenCompose (3)
private void seq() throws ExecutionException, InterruptedException { CompletableFuture<String> f1 = CompletableFuture.supplyAsync(new Supplier<String>() { @Override public String get() { try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } return "2018"; } }); CompletableFuture<Integer> f2 = f1.thenCompose(new Function<String, CompletableFuture<Integer>>() { @Override public CompletableFuture<Integer> apply(String s) { return CompletableFuture.supplyAsync(new Supplier<Integer>() { @Override public Integer get() { return Integer.parseInt(s); } }); } }); f2.whenCompleteAsync(new BiConsumer<Integer, Throwable>() { @Override public void accept(Integer integer, Throwable throwable) { System.out.println(integer); } }); }
输出:
06-12 19:16:03.551 13095-13134/zhangphil.test I/System.out: 2018