具有supplyAsync的CompletableFuture无法按预期方式工作

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

我正在使用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 ....

java multithreading future completable-future
1个回答
0
投票

您看到的结果只是一个巧合。主线程在异步任务执行/完成之前退出。最后添加.join(),您将始终看到结果:

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