pk10计划-您可能从未听说过的基本Java 9功能

Java 9于2017年9月发布,pk10计划它附带了新的和修订的功能,方法和其他元素的列表。在我们通过JDK增强建议(JEP)进行搜索时,我们遇到了JEP 266.它对CompletableFuture,并发更新和对Reactive Streams的支持有一些有趣的更新,引起了我们的注意。

在接下来的文章中,我们将深入研究JEP 266,了解它所提供的改进,并讨论一个非常有趣的功能,我们打赌它将是Java 9中最常用的功能之一。我们走吧

Oracle起草的JDK增强建议(JEP)之一虽然这个名字听起来像是一个小睡,但它拥有一些更新,可以解决并发性和并行性方面的有趣问题,这些问题需要这些库中的更新。

根据提案,更改和更新将是:

  1. 支持Reactive Streams发布 - 订阅框架的接口
  2. CompletableFuture API的一般改进,如支持延迟,超时,子类化和其他方法
  3. 一般改进,如小调整和javadoc规范rewording

我们选择专注于前两个子弹,里面有一些有趣的计划(因为一般的改进是如此......一般)。

我们注意到的第一件事是Java 9将支持Reactive Streams。这是一个来自Java社区的倡议,旨在改进开发人员的并发工作流程。第二件事是CompletableFuture API的一些fixer-uppers,它将我们带回到Future <T>。

但它实际上意味着什么?那么,我们很高兴你问。

第一次更新包括“支持Reactive Streams发布 - 订阅框架的接口,嵌套在新的类流中,以及开发人员可用于创建自定义组件的实用程序类SubmissionPublisher”。

我们从顶部开始。反应流解决了背压的痛苦。当传入任务速率高于系统处理它们的能力时发生的数据累积,这会导致未处理数据的缓冲区。

我们核心Akka团队的高级开发人员他们领导了Reactive Streams计划,他解释了为什么它如此重要以及如何使用它。

甲骨文指出,新的增强功能将包括“非常小的接口,与那些广泛参与(来自Reactive Streams计划)的接口相对应”。

这就是Flow类所在的地方由4个Java接口构成:

Flow类允许相互关联的接口和静态方法建立流控制组件,其中发布者生成由一个或多个订阅者使用的项目,每个订阅者都由订阅管理。

Reactive Streams在容器类java.util.concurrent.Flow下。在这里你会发现Flow.Publisher,这是一个用作lambda表达式或方法引用的赋值目标的函数接口。这个接口将更容易为Flow.Subscription生成元素,并将它们连接在一起。

这里的另一个元素是Flow.Subscriber,它异步工作并被请求触发。它可以从Flow.Subscription请求多个元素,并且可以根据需要定义缓冲区大小。

这些接口适用于并发和分布式异步设置,它们之间的通信依赖于简单的流量控制形式,可用于避免资源管理问题。

您可以在下面的查看java.util.concurrent.Flow的一些代码示例

您不必等待Java 9尝试使用Reactive Streams接口,因为一些已经实现了它们。所以你可以在Java 9启动之前查看语义。

Java 8为我们带来了CompletableFuture,实现了Future <T>。如果我们不希望或需要计算的即时结果,并且我们会收到一个Future对象,该对象可以为计算完成后将分配的实际结果“保留位置”。

CompletableFuture有两个实现Future对象的主要功能。它可以通过调用complete()方法而没有任何同步等待来显式完成。并且它允许在一系列操作中构建管道数据过程。

这样,即使计算未完成,使用默认/中间结果,任何类型的值在将来都可用,并具有默认返回值。

作为本提案一部分的更新解决了开发人员在Java 8中遇到的一些抱怨,其中包括对延迟和超时的支持,对子类化的更好支持以及一些实用方法。

 

如果您想了解更多有关CompletableFuture的信息,pk10计划以及它如何使您的代码变得有点......未来派,

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.buaamba.net/a/pk10jiqiao/130.html