【.com速译】Java9将于2017年7月正式发布,并提供新功能和修订功能列表以及部分特性。在搜索JDKEnhancementProposal(简称JEP)时,发现JEP266包含:对CompletableFuture的大量更新,以及更新的并发功能和对ReactiveStreams机制的支持,引起了我的注意。.在这篇文章中,我们来谈谈JEP266的新特性和修改特性,它很可能成为Java9的特性之一。1.Java9将迎来哪些增强?作为甲骨文公司起草的JDKEnhancementProposals(简称JEP)之一,它包含了许多有趣的更新,旨在解决与并行性相关的问题。根据这个提案,Java9将迎来以下变化和更新:各接口支持ReactiveStreams发布的订阅框架。CompletableFutureAPI将进行全面检查,包括对延迟、超时、子类化和其他方法的支持。更多小调整和javadoc规范修订。这里主要分析两个核心内容。第一项是Java9将支持ReactiveStreams。本提案来源于Java技术社区提出的改进开发者并行工作流的改进计划。第二个是对CompletableFutureAPI的可修复改进,允许开发人员返回到Future。但这有什么实际意义呢?2.Flow类介绍最新更新《接口支持的ReactiveStreams发布订阅框架》,嵌套了新的Flow类和SubmissionPublisher,供开发者创建自定义组件。让我们一一讨论。ReactiveStreams可以解决背压问题。当输入任务速率高于系统的处理能力时,就会发生数据堆积,为未处理的数据提供缓冲。对此,我们与ReactiveStreams开发团队的Akka高级开发人员KonradMalawski进行了交流,他解释了ReactiveStreams的重要性以及如何使用。据Oracle称,这一新的增强功能将包括“一小组接口,用于ReactiveStreams项目中各种广泛使用的定义接口。”这就是Flow类的用武之地。ReactiveSteams由4个Java接口构建而成:ReactiveStreams位于容器对象java.util.concurrent.Flow下。大型开发人员可以在这里找到Flow.Publisher,这是一个函数式接口,用作lambda表达式或方法引用的赋值目标。该接口将显着简化面向Flow.Subscription的元素的生成,Flow.Subscription将两者关联起来。另一个元素是Flow.Subscriber,它以异步工作机制运行,可以由请求触发。它可以从Flow.Subscription中获取多个元素,您可以根据需要自定义缓冲区大小。这些接口适用于并发和分布式异步设置,接口之间的通信通过简单的流控形式实现,可以避免资源管理问题。有兴趣的朋友可以看看java.util.concurrent.Flow的代码示例。去这里:http://gee.cs.oswego.edu/dl/concurrency-interest/index.html/另外,不需要等到Java9正式发布就可以体验ReactiveStreams接口,已经有各种第三方库采用这样的接口。3、CompletableFuture的新特性Java8***引入CompletableFuture时,对Future进行了扩展。Future适用于当我们不想或者不需要直接计算结果的时候,我们会收到一个Future对象来保存计算完成时分配的实际结果。CompletableFuture以两种方式扩展Future对象。它可以通过调用complete()方法显式完成,无需任何异步等待。此外,它允许使用一系列操作来构建数据处理管道。这样,任何类型的值都可以在Future中使用默认的返回值,即使当前计算尚未完成,它也可以使用默认的即时结果。这些更新将有效解决开发人员在使用Java8时面临的一些挑战。总结Java9确实为我们带来了一系列重大更新和改进,其中JEP266将是改进中最有趣的部分。此外,我们认为JEP266也是Oracle发布的最值得关注的更新之一,因为它源于技术社区自身的倡议,旨在帮助开发人员解决异步进程处理中的一些常见困难。我们对此深表感谢,期待Java9的正式发布。原文链接:https://dzone.com/articles/the-essential-java-9-feature-you-probably-never-he原文标题:TheEssentialJava9FeatureYouProbablyNeverHeardOf作者:HennIdan合作站点转载请注明原文译者和出处为.com]