为什么我的Thread.sleep进入CompletableFuture时会结束我的进程?

问题描述 投票:0回答:1

我正在尝试创建CompleteableFuture。我只是想注销一些声明。这是我的代码:

    static CompletableFuture<String> createFuture(String name) {
        return CompletableFuture.supplyAsync(() -> {
            try {
                System.out.println("Task execution started.");
                //Thread.sleep(2000);
                System.out.println("Task execution stopped.");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return name;
        });
    }

    static void start(Person person, List<Person> people) {
        CompletableFuture.allOf(
            createFuture("Bob")
        ).thenApply(s -> {
            return s;
        }).exceptionally(e -> {
            System.out.println(e);
            return null;
        });
    }

一切正常,直到我取消评论Thread.sleep(2000)。如果不加注释,该过程将终止。它不会进入catch,也不会进入exceptionally。为什么?我想念什么?我该如何工作?

java completable-future
1个回答
0
投票

问题是,当未定义执行程序时,CompletableFuture.supplyAsync使用公共JoinForkPool来执行供应商。

© www.soinside.com 2019 - 2024. All rights reserved.