CompletableFuture阻止主线程

时间:2017-11-29 13:40:51

标签: java multithreading asynchronous concurrency java-8

我知道来自get()的{​​{1}}方法会阻塞线程,但是如何在CompletableFuture处理时实现System.out.println("xD")的执行,因为此时此语句在{ {1}}已完成。

Future

1 个答案:

答案 0 :(得分:4)

您应该在打印声明后立即移动get() 这样,将在评估future的值时执行打印。

public static void main(String[] args) throws ExecutionException, InterruptedException {
    CompletableFuture<Integer> future = CompletableFuture.supplyAsync(CompletableFutureTest::counting).whenComplete((result, exception) -> {
        if (exception != null) {
            System.out.println(result);
        } else {
        }
    });

    System.out.println("xD");
    Integer value = future.get();
}