我是靠谱客的博主 矮小火,最近开发中收集的这篇文章主要介绍每日一课 | Java中的异步等待,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

编写异步代码很困难。试图了解异步代码应该做什么的难度更大。承诺是尝试描述延迟执行流程的一种常见方式:首先做一件事,然后再做另一件事,以防万一出错再做其他事情。

在许多语言中,承诺已成为协调异步行为的事实上的方法。Java 8终于有了该程序,并引入了CompletableFuture;尽管很认真,但谁设计了API?一团糟 !

许诺的麻烦在于,控制流程可能变得非常简单。随着控制流程变得更加复杂,几乎变得难以理解(执行此操作,然后,除非是星期三,否则执行另一件事,如果有错误,请返回三个空格,yada yada yada)。

很酷的孩子们已经开始使用异步…等待。C#拥有它。JavaScript有它。现在……现在,通过EA的一些大才能,Java拥有了它!是的,Java具有可用的async ... await构造,而无需更改语言!

一个简单的例子:我们可以使用CompletableFuture编写几个异步操作,如下所示: 

private static void theOldWay() {
    doAThing()
            .thenCompose(Main::doAnotherThing)
            .thenAccept(Main::reportSuccess)
            .exceptionally(Main::reportFailure);
}

这应该很简单,通常使用期货代码与这个简单代码相去甚远。但是,借助EA异步等待的魔力,我们可以像这样重新编写它: 

private static CompletableFuture<Void> theNewWay() {
    try {
        String intermediate = await(doAThing());
        String result = await(doAnotherThing(intermediate));
        reportSuccess(result);
    } catch (Throwable t) {
        reportFailure(t);
    }
    return completedFuture(null);
}

它看起来像同步代码。但是对Async.await的调用是神奇的。这些调用被重新编写(在运行时或构建时,如您所愿),以使调用无阻塞!

该代码更易于编写,易于阅读,易于调试一百万倍,最重要的是它可以自然扩展。随着代码变得越来越复杂,您可以使用常规的重构工具来控制它。使用CompletableFutures,您最终会绕过所有这些将来的对象,并且在某个地方,有一天您会错过代码路径和繁荣!生产中的一个免费错误。

因此,即使您坚持使用Java,您仍然可以像酷孩子一样使用async…await!

翻译自: https://www.javacodegeeks.com/2018/02/async-await-java.html

今日福利????

推荐阅读--

当一个程序员飞速敲键盘时,他在干嘛?

卧槽!最新编程语言排名,Java 沦为老二。。

为何程序员上班时间总戴个耳机,看完恍然大悟...

每日一课 | 如何将Java对象读取和写入文件

每日一课 | Java Final关键字示例

最后

以上就是矮小火为你收集整理的每日一课 | Java中的异步等待的全部内容,希望文章能够帮你解决每日一课 | Java中的异步等待所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部