我正在使用Java CompletableFuture进行一些实验。这是代码
public class SpringBootAsyncApplication {
public static void main(String[] args) {
CompletableFuture.supplyAsync(() - > {
return MailUtil.getMailInfo();
}).thenAccept(content - > {
System.out.println("Mail content: " + content);
});
}
}
class MailUtil {
public static String getMailInfo() {
return "Your email content";
}
public static boolean sendMail() {
System.out.println("Send mail: completed");
return true;
}
public static void logging() {
System.out.println("Log: Send mail at " + System.currentTimeMillis());
}
}
我运行了3次程序。他们都没有返回任何输出吗?但是当我用数字5替换return MailUtil.getMailInfo();
时>
CompletableFuture.supplyAsync(() - > { return 5; }).thenAccept(content - > { System.out.println("Mail content: " + content); });
然后正常运行。为什么会这样?
我正在使用Java CompletableFuture进行一些实验。这是代码,公共类SpringBootAsyncApplication {public static void main(String [] args){CompletableFuture ....
您看到的结果只是一个巧合。主线程在异步任务执行/完成之前退出。最后添加.join()
,您将始终看到结果: