我正在尝试创建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
。为什么?我想念什么?我该如何工作?
问题是,当未定义执行程序时,CompletableFuture.supplyAsync
使用公共JoinForkPool
来执行供应商。