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