我正在尝试使用CompletableFutures创建一个异步管道。但是问题是当我使用thenAccept方法而不是thenAcceptAsync时,我的主线程等待printNumber方法完成。我不明白为什么CompletableFutures中有一个同步方法。
当我运行以下代码时,Main方法正在等待printNumber完成。
输出:
number:5
Main method completed
这是我的代码;
public class Main {
public static int generateNumber(){
return 5;
}
public static CompletableFuture<Integer> create(){
return CompletableFuture.supplyAsync(() -> generateNumber());
}
public static void printNumber(int number){
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("number:" + number);
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
create().thenAccept(data -> printNumber(data));
System.out.println("Main method completed");
}
}